命令列是 DBA 與開發者操作 MySQL 最基礎、最高效的方式。本文系統整理 mysql 客戶端登入參數、多種簡寫模式、登入後驗證操作,並附圖文實戰演示,助你掌握專業級命令列操作技巧。
mysql -h <主機> -u <用戶> -p<密碼> -P <端口> -D <資料庫>
| 參數 | 全寫 | 說明 | 必填 | 範例 |
|---|---|---|---|---|
-h | --host | MySQL 伺服器地址(IP 或主機名) | 否(預設 localhost) | -h 192.168.1.100 |
-u | --user | 登入用戶名 | 是 | -u root / -uroot |
-p | --password | 密碼,**緊跟參數無空格**;若只寫 -p 會交互式提示輸入 | 否(建議交互式) | -p123456 / -p |
-P | --port | 連接埠(大寫 P) | 否(預設 3306) | -P 3307 |
-D | --database | 直接進入指定資料庫 | 否 | -D mydb |
-e | --execute | 執行單條 SQL 後退出(適合腳本) | 否 | -e "SELECT VERSION();" |
--socket | - | 指定 Unix socket 路徑(Linux 本地連接) | 否 | --socket=/tmp/mysql.sock |
--protocol | - | 強制協議:TCP、SOCKET、PIPE、MEMORY | 否 | --protocol=TCP |
⚠️ 關鍵細節:
-p與密碼之間**不能有空格**。-p123正確,-p 123會被解析為「無密碼登入」並將123視為資料庫名。
| 模式 | 命令範例 | 適用場景 |
|---|---|---|
| 完整參數 | mysql -h localhost -u root -p123456 | 腳本自動化、非本機連接 |
| 簡寫用戶名 | mysql -uroot -p123456 | 日常操作慣用 |
| 交互式輸入密碼(推薦) | mysql -u root -p | 安全性最高,歷史不留密碼 |
| 僅用戶名交互式 | mysql -uroot -p | 同上,更簡潔 |
| 指定資料庫直入 | mysql -uroot -p -D mydb | 已知操作目標庫 |
| 執行單條 SQL 退出 | mysql -uroot -p -e "SHOW DATABASES;" | Shell 腳本、監控採集 |

輸入 mysql -u root -p 後按 Enter,提示 Enter password: 盲輸密碼,登入成功進入 mysql> 提示符。

顯示歡迎資訊、連線 ID、Server 版本、版權聲明、幫助提示。

演示操作:
mysql> USE emcs72;
Database changed
mysql> SHOW TABLES;
+-------------------+
| Tables_in_emcs72 |
+-------------------+
| ... |
+-------------------+
# 建立 .mylogin.cnf(加密儲存)
mysql_config_editor set --login-path=local --host=localhost --user=root --password
# 使用登入路徑
mysql --login-path=local
mysql -uroot -p < backup.sql
# 或
mysql -uroot -p -e "SOURCE /path/to/backup.sql;"
| 命令 | 縮寫 | 功能 |
|---|---|---|
SHOW DATABASES; | \d | 列出所有資料庫 |
USE db_name; | - | 切換資料庫 |
SHOW TABLES; | - | 列出當前庫所有表 |
DESC table_name; | - | 查看表結構 |
SHOW CREATE TABLE tbl; | - | 查看建表語句 |
STATUS; | \s | 顯示連線狀態、編碼、版本等 |
EXIT / QUIT | \q | 退出客戶端 |
mysql --prompt="\u@\h [\d]> "
# 顯示:root@localhost [mydb]>
| 現象 | 原因 | 解決 |
|---|---|---|
ERROR 2003 (HY000): Can't connect to MySQL server | 服務未啟動 / 防火牆 / host/port 錯誤 / skip-networking | 檢查服務狀態、3306 端口、配置檔 bind-address |
ERROR 1045 (28000): Access denied for user 'root'@'localhost' | 密碼錯誤 / 用戶不存在 / Host 不匹配 / 權限表損壞 | 重置密碼、確認 user 表、檢查 skip-grant-tables |
| 中文顯示亂碼 | 字符集不匹配 | SET NAMES utf8mb4; 或配置 default-character-set=utf8mb4 |
| 命令未找到 | mysql 不在 PATH 中 | 將 bin 目錄加入系統 PATH 或用絕對路徑 |
專業習慣:生產環境**嚴禁**在命令列明文輸入密碼(
-p123),務必使用-p交互式輸入或mysql_config_editor加密登入路徑。將常用連線資訊配置在~/.my.cnf[client]區段,日常操作只需輸入mysql即可。