# 本地連線
mysql -u root -p
# 遠端連線
mysql -h 192.168.1.100 -u root -p'password' -P 3306
# 退出
exit
# 5.7+ 官方推薦
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';
FLUSH PRIVILEGES;
# 或 mysqladmin
mysqladmin -u root -p'oldpass' password 'newpass'
CREATE USER 'app'@'%' IDENTIFIED BY 'strongpass';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app'@'%';
FLUSH PRIVILEGES;
# 僅本地連線 (較安全)
GRANT ALL ON mydb.* TO 'app'@'localhost';
| 操作 | 語法 |
|---|---|
| 建庫 | CREATE DATABASE db_name CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci; |
| 刪庫 | DROP DATABASE db_name; |
| 建表 | CREATE TABLE t (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL) ENGINE=InnoDB; |
| 刪表 | DROP TABLE t; |
| 清空表 | TRUNCATE TABLE t; (比 DELETE 快,不記 Binlog) |
| 查詢 | SELECT * FROM t WHERE id=1; |
| 插入 | INSERT INTO t (name) VALUES ('test'); |
| 更新 | UPDATE t SET name='new' WHERE id=1; |
| 刪除 | DELETE FROM t WHERE id=1; |
LOAD DATA LOCAL INFILE '/path/data.txt' INTO TABLE t
FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' (col1, col2);
# 全庫備份 (含結構+資料+常式)
mysqldump -u root -p --single-transaction --routines --triggers --events db > backup.sql
# 僅結構
mysqldump -d -u root -p db > struct.sql
# 壓縮備份
mysqldump -u root -p db | gzip > backup.sql.gz
mysql -u root -p db < backup.sql
# 或大檔案用 source
mysql> SOURCE /path/backup.sql;
原理:MySQL 資料目錄下每個資料庫一個子目錄,直接複製目錄即可遷移 (需停庫或鎖表)。
# 主庫
FLUSH TABLES WITH READ LOCK;
# 複製 /var/lib/mysql/db_name 到從機同目錄
UNLOCK TABLES;
# 從機重啟或 FLUSH TABLES 即可識別
注意:InnoDB 共享表空間 ibdata1 需一併複製,或使用 innodb_file_per_table=ON 獨立表空間遷移更靈活。
| 參數 | 用途 |
|---|---|
| --opt | 綜合優化 (--quick --add-drop-table --add-locks --extended-insert --lock-tables) |
| --single-transaction | InnoDB 熱備份不鎖表,必加 |
| --master-data=2 | 記錄 Binlog 位置 (註解形式),搭建主從必備 |
| --hex-blob | 二進位欄位十六進位輸出,避免編碼損壞 |
| --skip-lock-tables | 配合 --single-transaction 避免鎖表 |
| -w, --where | 條件匯出,如 -w "id>1000" |
# Systemd (現代 Linux)
systemctl start|stop|restart|status mysqld
# Windows 服務
net start mysql
net stop mysql
STOP SLAVE IO_THREAD; 等 Has read all relay log。STOP SLAVE; RESET MASTER; 刪除 master.info、relay-log.info。CHANGE MASTER TO + START SLAVE)。MySQL 基礎操作看似簡單,但生產環境關鍵在於:字符集統一 utf8mb4、InnoDB 單表空間、熱備份 --single-transaction、主從 GTID 模式、嚴格權限最小化。建立 SOP 文檔,定期演練備份還原與主從切換,才能從容應對故障。