服務管理
# 本地連接
mysql -u root -p # 交互輸入密碼
mysql -u root -p'password' # 直接帶密碼 (不安全,歷史記錄可見)
mysql -u root -h 127.0.0.1 -P 3306 -p # 顯式指定 TCP 連接
# 遠程連接
mysql -h 192.168.1.100 -u app_user -p -P 3306
# 無密碼登錄 (配置文件)
# ~/.my.cnf
[client]
user=root
password=StrongPass#
# 然后直接 mysql
用戶與權限管理
-- 庫
SHOW DATABASES;
CREATE DATABASE biz DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE biz;
DROP DATABASE biz;
-- 表
SHOW TABLES;
CREATE TABLE users (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
SHOW CREATE TABLE users\G
DESC users;
ALTER TABLE users ADD COLUMN phone VARCHAR(20);
DROP TABLE users;
TRUNCATE TABLE users;
數據增刪改查 (CRUD)
# 邏輯備份 (mysqldump)
# 單庫
mysqldump -u root -p --single-transaction --routines --triggers --master-data=2 biz > biz_$(date +%F).sql
# 全庫
mysqldump -u root -p --all-databases --single-transaction --routines --triggers --master-data=2 > full_$(date +%F).sql
# 壓縮備份
mysqldump -u root -p biz | gzip > biz_$(date +%F).sql.gz
# 恢復
mysql -u root -p biz < biz_2024-01-15.sql
gunzip < biz_2024-01-15.sql.gz | mysql -u root -p biz
# 物理備份 (需停庫或加鎖)
# xtrabackup (熱備、不鎖表)
xtrabackup --backup --target-dir=/backup/full --user=root --password
xtrabackup --prepare --target-dir=/backup/full
# 恢復需停止 mysql、清空 datadir、拷貝回、chown、啟動
常用管理命令
| 命令 | 作用 |
SHOW PROCESSLIST | 查看當前線程,定位慢查詢 |
KILL 123 | 終止線程 ID 123 |
SHOW VARIABLES LIKE 'max_con%' | 查看配置參數 |
SET GLOBAL max_connections = 1000 | 動態修改參數 (重啟失效,需改配置文件) |
SHOW STATUS LIKE 'Threads_%' | 查看線程狀態計數器 |
FLUSH TABLES WITH READ LOCK | 全局讀鎖 (備份一致性點) |
UNLOCK TABLES | 釋放鎖 |
ANALYZE TABLE users | 更新統計信息 (優化器依賴) |
OPTIMIZE TABLE users | 整理碎片、重建索引 |
CHECK TABLE users | 檢查表錯誤 |
REPAIR TABLE users | 修復損壞表 (MyISAM) |
進階技巧