mysql 客戶端啟動方式
# 互動模式
mysql -u root -p
mysql -h 10.0.0.1 -u app -p -P 3306 -D mydb
# 批次模式(管道/檔案)
mysql -u root -p mydb < script.sql
cat script.sql | mysql -u root -p mydb
mysql -u root -p -e "SELECT VERSION();"
# 縮寫參數對照
-u, --user= # 用戶名
-p, --password[=] # 密碼(不加 = 提示輸入,安全)
-h, --host= # 主機
-P, --port= # 埠
-D, --database= # 預設資料庫
--protocol=TCP|SOCKET|PIPE|MEMORY
--compress # 壓縮協議
--ssl-mode=REQUIRED
選項檔優先順序與結構
# 讀取順序(後者覆蓋前者)
1. /etc/my.cnf # 全域
2. /etc/mysql/my.cnf # Debian/Ubuntu
3. $MYSQL_HOME/my.cnf # 伺服器基礎目錄
4. defaults-extra-file # --defaults-extra-file= 指定
5. ~/.my.cnf # 用戶
6. 命令列參數 # 最高優先級
# 區塊結構
[client] # 所有客戶端通用
[mysql] # mysql 專用
[mysqldump] # mysqldump 專用
[mysqladmin] # mysqladmin 專用
# 範例
[client]
user = app_user
password = "secret"
host = 10.0.0.1
[mysql]
prompt = "(\u@\h) [\d]> "
auto-rehash
safe-updates
連線協議選擇
| 協議 | 適用場景 | 連線字串 |
| TCP/IP | 跨主機、容器、雲 | -h host -P 3306 |
| Unix Socket | 本機、最高效能 | -S /var/run/mysqld/mysqld.sock |
| Named Pipe | Windows 本機 | --protocol=PIPE |
| Shared Memory | Windows 本機 | --protocol=MEMORY |
自動選擇:localhost → Socket,127.0.0.1 → TCP,可用 --protocol 強制。
批次模式最佳實踐
- 腳本檔每句以
; 或 \g 結尾
- 錯誤處理:
--force 繼續執行,--silent 抑制表格輸出
- 輸出格式:
--html、--xml、--vertical(\G)、--tab (TSV)
- 結果導向檔案:
mysql ... > output.txt 2>&1
常用內建命令
| 命令 | 縮寫 | 功能 |
| help | \h | 幫助 |
| quit | \q | 退出 |
| clear | \c | 清除當前語句 |
| connect | \r | 重新連線 |
| status | \s | 連線狀態 |
| use db | \u db | 切換資料庫 |
| source file | \. file | 執行腳本檔 |
| tee file | \T | 記錄輸出到檔案 |
| notee | \t | 停止記錄 |
疑難排解