MySQL 客戶端 mysql 擁有豐富的啟動選項,善用可大幅提升管理效率、自動化腳本穩定性與安全性。本文精選十大實用選項深度解析。
| 選項 | 短參 | 功能 | 實戰場景 |
|---|---|---|---|
--execute, -e | -e | 直接執行 SQL 字串,非互動模式 | 腳本自動化、Cron 任務、單行查詢 |
--batch, -B | -B | 批次模式:表格輸出用 Tab 分隔、不顯示框線 | 資料匯出給程式處理、CSV 產生 |
--skip-column-names, -N | -N | 不輸出欄位標題列 | 配合 -B 產出純資料、餵給其他指令 |
--vertical, -E | -E | 垂直顯示結果(每欄一行) | 寬表、欄位多、內容長時易閱讀 |
--html, -H | -H | 輸出 HTML 表格 | 快速產生報表網頁、嵌入文件 |
--xml, -X | -X | 輸出 XML 格式 | 系統整合、API 回應、資料交換 |
--safe-updates, -U | -U | 拒絕無 WHERE 的 UPDATE/DELETE、限制大結果集 | 防止手滑刪光表、生產環境保護 |
--auto-rehash | 啟用自動完成(Tab 鍵補全表名、欄位名) | 互動式管理大幅提速 | |
--pager | 指定分頁器(如 less、more) | 大結果集分頁閱讀、搜尋 | |
--prompt | 自訂提示符(顯示用戶、主機、資料庫、時間) | 多環境切換避免誤操作 |
#!/bin/bash
mysql -u backup -p${PASS} --batch --skip-column-names \
-e "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='mydb'" \
| while read table; do
mysqldump -u backup -p${PASS} mydb $table | gzip > ${table}_$(date +%F).sql.gz
done
mysql -u root -p -H -e "
SELECT TABLE_NAME, TABLE_ROWS, DATA_LENGTH/1024/1024 AS DATA_MB
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='mydb'
ORDER BY DATA_LENGTH DESC
" > report_$(date +%F).html
# .my.cnf 設定
[mysql]
auto-rehash
safe-updates
pager=less -iSFX
prompt="\\u@\\h [\\d] \\r:\\m:\\s> "
mysql -u root -p -X -e "
SELECT id, name, email, created_at FROM users WHERE status=1
" > active_users.xml
ssh db-server "mysql -u admin -p${PASS} -e 'SHOW PROCESSLIST'" | grep -v Sleep
SET NAMES utf8mb4; SET time_zone='+08:00';)--connect-timeout、--max-allowed-packet:調整連線/傳輸參數--ssl-mode=REQUIRED:強制加密連線--default-auth=authentication_ldap_client:支援 LDAP 認證--no-auto-rehash(預設啟用),改用 --disable-auto-rehashmysql --help 確認將常用選項寫入 ~/.my.cnf [mysql] 區段,或建立別名 alias mysql='mysql --safe-updates --auto-rehash --pager="less -iSFX"',讓每次操作都更安全、高效。