一、安裝目錄速覽
| 類型 | 路徑 | 說明 |
| 數據目錄 | /var/lib/mysql/ | 存放 .ibd/.frm 等數據文件 |
| 配置文件 | /etc/my.cnf 或 /usr/share/mysql/ | 主配置與啟動腳本 |
| 執行程序 | /usr/bin/ | mysql, mysqladmin, mysqldump 等 |
| 啟動腳本 | /etc/init.d/mysql | SysV 風格服務管理 |
二、系統管理命令
# 連接
mysql -u root -p
mysql -h 127.0.0.1 -u root -p
# 修改密碼(5.7+ 語法)
mysql -u root -p -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';"
# 用戶管理
CREATE USER 'app'@'%' IDENTIFIED BY 'pass';
GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO 'app'@'%';
FLUSH PRIVILEGES;
DROP USER 'app'@'%';
三、庫表操作核心集
1. 數據庫
SHOW DATABASES;
CREATE DATABASE test;
USE test;
SELECT DATABASE();
SHOW TABLES;
DROP DATABASE test;
2. 表結構
CREATE TABLE MyClass (
id INT(4) NOT NULL PRIMARY KEY AUTO_INCREMENT,
name CHAR(20) NOT NULL,
sex INT(4) NOT NULL DEFAULT '0',
degree DOUBLE(16,2)
);
DESC MyClass;
SHOW COLUMNS FROM MyClass;
DROP TABLE MyClass;
3. 數據操作
INSERT INTO MyClass VALUES (1,'Tom',96.45),(2,'Joan',82.99);
SELECT * FROM MyClass;
SELECT * FROM MyClass LIMIT 0,2;
DELETE FROM MyClass WHERE id=1;
UPDATE MyClass SET name='Mary' WHERE id=1;
ALTER TABLE MyClass ADD passtest INT(4) DEFAULT '0';
RENAME TABLE MyClass TO YouClass;
四、數據遷移:mysqldump 完全指南
1. 導出模式對比
| 需求 | 命令模板 | 關鍵參數 |
| 全庫備份 | mysqldump -u root -p -A > all.sql | -A (--all-databases) |
| 單庫備份(結構+數據) | mysqldump -u root -p db > db.sql | 默認行為 |
| 單表備份 | mysqldump -u root -p db tbl > tbl.sql | 指定表名 |
| 僅結構 | mysqldump -u root -p -d db > struct.sql | -d (--no-data) |
| 僅數據 | mysqldump -u root -p -t db > data.sql | -t (--no-create-info) |
| 含存儲過程/函數 | mysqldump -u root -p -R db > routines.sql | -R (--routines) |
| 含事件 | mysqldump -u root -p -E db > events.sql | -E (--events) |
| 熱備份(InnoDB) | mysqldump -u root -p --single-transaction db > hot.sql | --single-transaction |
2. 導入方式
# 方式一:source(需先建庫進入)
mysql -u root -p -e "CREATE DATABASE db;"
mysql -u root -p db -e "SOURCE /path/db.sql;"
# 方式二:管道重定向(推薦腳本化)
mysql -u root -p db < /path/db.sql
3. 生產環境備份最佳實踐
#!/bin/bash
# 日備份腳本示例
DATE=$(date +%F_%H-%M)
mysqldump -u backup_user -p'StrongPass' \
--single-transaction \
--master-data=2 \
--flush-logs \
--routines --events --triggers \
--databases db1 db2 > /backup/mysql_${DATE}.sql
# 壓縮
gzip /backup/mysql_${DATE}.sql
# 保留 7 天
find /backup -name "mysql_*.sql.gz" -mtime +7 -delete
五、進階技巧:字段內容批量更新
-- 替換字符串
UPDATE article SET content = REPLACE(content, '舊域名.com', '新域名.com');
-- 前綴拼接
UPDATE article SET content = CONCAT(' ', content);
-- 條件批量更新
UPDATE orders SET status=2 WHERE status=1 AND created_at < '2023-01-01';
本文彙總的命令覆蓋從安裝部署到日常運維的全鏈路。建議將高頻命令製成便簽,重點掌握 mysqldump 參數組合與 GRANT 權限模型,這是 DBA 與開發者的分水嶺。