MySQL 內建多種客戶端工具,其中 mysql(互動式 SQL Shell)與 mysqladmin(管理操作)是日常運維核心。本文深入實戰技巧。
mysql [選項] [資料庫名] [非互動參數]
# 常用連線
mysql -h host -u user -p -D dbname
密碼不建議寫在指令列(-ppassword),以免洩露於程序清單;略過 -p 讓系統提示輸入最安全。
| 指令 | 功能 |
|---|---|
SHOW DATABASES; | 列出所有資料庫 |
USE db_name; | 切換預設資料庫 |
SHOW TABLES; | 列出目前資料庫所有表 |
DESCRIBE tbl_name; | 顯示表結構 |
SELECT ...; | 執行查詢 |
EXIT / QUIT / \q | 離開客戶端 |
# 從檔案執行 SQL
mysql -u root -p < /path/to/script.sql
# 登入後用 source 執行
mysql> SOURCE /path/to/script.sql
應用:定時任務抓取狀態變數寄送郵件、自動化部署腳本。
mysql < queries.sql | more\G,適合寬表閱讀。\T session.log 開始記錄,\t 停止。STATUS 或 \s 顯示正常運行時間、連線數、QPS 等。--safe-updates(或 -U),拒絕無 WHERE 的 UPDATE/DELETE。--prompt="(\u@\h) [\d]>"my.cnf [mysql] prompt=(\u@\h) [\d]>export MYSQL_PS1="(\u@\h) [\d]>"SHOW VARIABLES; -- 所有系統變數
SHOW VARIABLES LIKE 'table_type';
SHOW STATUS; -- 所有狀態變數
SHOW STATUS LIKE 'Threads_connected';
# 檢查伺服器存活
mysqladmin -u root -p ping
# 關閉伺服器
mysqladmin -u root -p shutdown
# 查看執行緒/狀態/變數
mysqladmin -u root -p processlist
mysqladmin -u root -p status
mysqladmin -u root -p variables
mysqldump:備份匯出mysqlimport:匯入文字檔mysqlshow:快速瀏覽庫/表/欄位mysqlcheck:檢查/修復/優化表myisamchk:MyISAM 離線維護mysqlbinlog:二進制日誌分析mysql_upgrade:升級後系統表檢查