雖然有 phpMyAdmin、Navicat 等圖形工具,但命令列操作是理解 MySQL 內部機制、排查線上問題、自動化運維的基石。本文系統整理連線參數、核心資訊查看命令與實戰輸出解讀。
# 完整格式
mysql -h -u -p -P -D
# 實戰常用簡寫
mysql -u root -p # 本機、預設端口 3306、交互輸入密碼 (最安全)
mysql -u root -p'Pass123' -h 10.0.0.1 -P 3306 # 指定主機/端口/密碼 (腳本用,注意無空格)
mysql -u readonly -p -D report_db # 直接進入指定庫
安全鐵律:
-ppassword),會殘留在 Shell 歷史 (~/.bash_history) 與進程列表 (ps -ef)。~/.my.cnf 客戶端配置檔存放憑證:[client] user=root password=xxx,權限 600。mysql> SELECT VERSION(); -- 確認版本、協議兼容性
mysql> SELECT USER(), CURRENT_USER(); -- 確認身份、權限上下文
mysql> SHOW VARIABLES LIKE 'character_set_%'; -- 確認字元集一致性 (防亂碼)
mysql> SHOW ENGINES; -- 確認引擎支援、預設引擎
mysql> SHOW DATABASES; -- 確認可見資料庫範圍
| 查詢目標 | 命令 | 關鍵輸出解讀 |
|---|---|---|
| 版本資訊 | SELECT VERSION(); | 如 5.7.33-log、8.0.28,確認功能支援度 |
| 儲存引擎 | SHOW ENGINES; | Support 欄: YES/DEFAULT/NO。DEFAULT 為當前預設 (通常 InnoDB)。Transactions、XA、Savepoints 確認事務支援 |
| 當前用戶 | SELECT USER(); | 連線時指定的用戶@主機 |
| 權限用戶 | SELECT CURRENT_USER(); | 權限系統實際匹配的用戶@主機 |
| 用戶具體權限 | SHOW GRANTS FOR 'user'@'host'; | 列出 GRANT 語句,確認最小權限落實 |
| 可見資料庫 | SHOW DATABASES; | 受權限限制,非超級用戶僅見有權限的庫 |
| 切換資料庫 | USE db_name; | 後續無庫前綴操作預設針對此庫 |
| 當前庫所有表 | SHOW TABLES; | 配合 SHOW TABLE STATUS 看行數、引擎、大小 |
| 表結構詳情 | DESC table_name; / SHOW COLUMNS FROM table_name; | 欄位、型別、Null、Key、Default、Extra |
| 建表完整 DDL | SHOW CREATE TABLE table_name; | 含引擎、字元集、分區、索引定義,遷移必備 |
| 表索引詳情 | SHOW INDEX FROM table_name; | 索引名、唯一性、欄位順序、基數 |
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything written disappears) | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
解讀:DEFAULT 標示預設引擎。生產核心表**必須使用 InnoDB** (事務、行鎖、外鍵、崩潰恢復)。FEDERATED 預設未啟用。
+------------+------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+-------------------+-----------------------------+
| id | bigint unsigned | NO | PRI | NULL | auto_increment |
| username | varchar(32) | NO | UNI | | |
| email | varchar(128) | NO | MUL | | |
| created_at | timestamp | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
| updated_at | timestamp | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update |
+------------+------------------+------+-----+-------------------+-----------------------------+
Key 欄位:PRI=主鍵、UNI=唯一索引、MUL=非唯一索引 (允許重複值)。Extra 顯示 auto_increment、on update CURRENT_TIMESTAMP 等特性。
連線成功歡迎界面:

SHOW ENGINES 輸出:

DESC、SHOW DATABASES、SHOW TABLES 綜合輸出:

命令列工具本質查詢 information_schema,直接查系統表更靈活:
-- 查看所有表大小、行數、引擎 (按大小排序)
SELECT TABLE_SCHEMA, TABLE_NAME, ENGINE, TABLE_ROWS,
ROUND((DATA_LENGTH+INDEX_LENGTH)/1024/1024, 2) AS Size_MB
FROM information_schema.TABLES
WHERE TABLE_SCHEMA NOT IN ('mysql','information_schema','performance_schema','sys')
ORDER BY Size_MB DESC;
-- 查找無主鍵表 (隱患排查)
SELECT TABLE_SCHEMA, TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA='my_db' AND CREATE_OPTIONS NOT LIKE '%auto_increment%';
mysql> QUIT; -- 或 EXIT、\q
# 良好習慣:作業完成立即退出,釋放連線資源,避免佔用 max_connections
命令列連線參數安全規範、核心資訊查看命令 (版本、引擎、用戶、權限、結構)、輸出解讀技巧、information_schema 進階查詢,構成 MySQL command-line 基礎功力。建議建立個人 ~/.my.cnf 並熟練使用 SHOW CREATE TABLE、SHOW ENGINES、SHOW GRANTS 三大神器。