MySQL SHOW 系列指令是 DBA 與開發者日常巡檢、排查效能、驗證結構的瑞士刀。本文系統彙整 20+ 常用 SHOW 命令,按對象分類並附帶實戰輸出解讀,助您快速定位所需資訊。
| 指令 | 用途 | 關鍵輸出欄位 |
|---|---|---|
SHOW DATABASES; | 列出所有資料庫 | Database |
SHOW TABLES [FROM db_name]; | 列出指定庫的所有表 | Tables_in_db |
SHOW COLUMNS FROM tbl_name [FROM db_name]; | 顯示表欄位定義 | Field, Type, Null, Key, Default, Extra |
SHOW CREATE TABLE tbl_name; | 顯示建表完整 DDL | Create Table(含引擎、字元集、索引) |
SHOW TABLE STATUS [FROM db_name]; | 表統計資訊 | Engine, Rows, Avg_row_length, Data_length, Index_length, Auto_increment, Create_time |
SHOW INDEX FROM tbl_name; | 顯示索引詳情 | Key_name, Seq_in_index, Column_name, Cardinality, Null, Index_type |
| 指令 | 用途 |
|---|---|
SHOW GRANTS FOR 'user'@'host'; | 顯示使用者權限(等同 GRANT 語句) |
SHOW PRIVILEGES; | 列出伺服器支援的所有權限項目 |
| 指令 | 用途 | 關鍵指標 |
|---|---|---|
SHOW STATUS [GLOBAL|SESSION]; | 伺服器狀態變數 | Threads_connected, Questions, Slow_queries, Innodb_buffer_pool_reads, Handler_read_rnd_next |
SHOW VARIABLES [LIKE 'pattern']; | 系統配置參數 | innodb_buffer_pool_size, max_connections, sql_mode, character_set_server |
SHOW PROCESSLIST; | 當前執行緒/查詢 | Id, User, Host, db, Command, Time, State, Info(需 PROCESS 權限看全) |
SHOW ENGINE INNODB STATUS; | InnoDB 內部狀態 | 交易、鎖、死鎖、緩衝池、檔案 I/O 詳細資訊 |
SHOW WARNINGS / SHOW ERRORS; | 最近語句的警告/錯誤 | 排查截斷、外鍵失敗等隱性問題 |
| 指令 | 用途 |
|---|---|
SHOW ENGINES; | 列出所有引擎支援狀態(DEFAULT/YES/NO/DISABLED) |
SHOW CREATE DATABASE db_name; | 顯示建庫 DDL |
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT n]; | 檢視 Binlog 事件(補充指令) |
SHOW MASTER STATUS; | 主庫 Binlog 位置 |
SHOW SLAVE STATUS\G; | 從庫複寫狀態(關鍵:Seconds_Behind_Master) |
不進入 MySQL Shell 即可查詢結構:
# 列出所有資料庫
mysqlshow -u root -p
# 列出指定庫的表
mysqlshow -u root -p mysql
# 列出表欄位
mysqlshow -u root -p mysql user
# 列出欄位詳細屬性
mysqlshow -u root -p mysql user user
#!/bin/bash
# 日常巡檢關鍵指標
mysql -e "SHOW GLOBAL STATUS LIKE 'Threads_%'; SHOW GLOBAL STATUS LIKE 'Slow_queries'; SHOW ENGINE INNODB STATUS\G" | tee /var/log/mysql_daily_$(date +%F).log