SHOW 系列命令是 MySQL 運行狀態觀測、元數據查詢、權限審計的核心工具集。本文分類整理 18 個常用 SHOW 子命令,並補充基礎操作速查表。
| 命令 | 作用 | 示例 |
|---|---|---|
SHOW DATABASES | 列出所有數據庫 | SHOW DATABASES; |
SHOW TABLES [FROM db_name] | 列出當前/指定庫的表 | SHOW TABLES FROM test; |
SHOW COLUMNS FROM tbl_name [FROM db_name] | 顯示表結構 (等同 DESC tbl_name) | SHOW COLUMNS FROM users; |
SHOW CREATE DATABASE db_name | 顯示建庫語句 | SHOW CREATE DATABASE test; |
SHOW CREATE TABLE tbl_name | 顯示建表語句 | SHOW CREATE TABLE users; |
SHOW INDEX FROM tbl_name | 顯示索引詳情 | SHOW INDEX FROM orders; |
| 命令 | 作用 |
|---|---|
SHOW GRANTS FOR user | 顯示用戶權限 (等同 GRANT 語句) |
SHOW PRIVILEGES | 顯示服務器支持的所有權限類型 |
| 命令 | 作用 | 關鍵輸出 |
|---|---|---|
SHOW PROCESSLIST | 當前所有線程/查詢 | Id, User, Host, db, Command, Time, State, Info |
SHOW STATUS | 服務器狀態變量 | Threads_running, Queries, Slow_queries, Innodb_buffer_pool_reads |
SHOW VARIABLES | 系統配置變量 | max_connections, innodb_buffer_pool_size, sql_mode |
SHOW TABLE STATUS [FROM db_name] | 表級統計信息 | Engine, Rows, Data_length, Index_length, Auto_increment, Update_time |
SHOW ENGINES / SHOW [STORAGE] ENGINES | 可用存儲引擎及默認引擎 | Support, Comment, Transactions, XA, Savepoints |
SHOW INNODB STATUS | InnoDB 內部狀態 (鎖、事務、緩沖池、日志等) | 大量文本輸出,建議導出文件分析 |
SHOW LOGS | BDB 引擎日志 (已棄用) | -- |
SHOW WARNINGS | 上條語句的警告/錯誤/通知 | Level, Code, Message |
SHOW ERRORS | 上條語句的錯誤 | Level, Code, Message |
-- 連接/斷開
mysql -h host -u user -p
QUIT / EXIT
-- 數據庫操作
CREATE DATABASE db_name;
USE db_name;
DROP DATABASE db_name;
-- 表操作
CREATE TABLE tbl (col1 TYPE, col2 TYPE...);
DESCRIBE tbl;
ALTER TABLE tbl ADD COLUMN col TYPE;
ALTER TABLE tbl MODIFY col NEW_TYPE;
ALTER TABLE tbl CHANGE old_col new_col TYPE;
DROP TABLE tbl;
-- 數據操作
INSERT INTO tbl (col1, col2) VALUES (val1, val2);
SELECT * FROM tbl WHERE condition;
UPDATE tbl SET col1=val1 WHERE condition;
DELETE FROM tbl WHERE condition;
-- 備份/恢復
mysqldump -u root -p db_name > backup.sql
mysql -u root -p db_name < backup.sql
mysqldump -u root -p db_name tbl_name > tbl_backup.sql
-- 權限管理
GRANT ALL ON db.* TO 'user'@'host' IDENTIFIED BY 'pass';
REVOKE DELETE ON *.* FROM 'user'@'host';
FLUSH PRIVILEGES;
DROP USER 'user'@'host';
RENAME USER 'old'@'%' TO 'new'@'%';
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
SHOW PROCESSLIST 配合 KILL id 處理阻塞查詢。SHOW STATUS LIKE 'Slow_queries' + SHOW VARIABLES LIKE 'long_query_time' 監控慢查詢。SHOW ENGINE INNODB STATUS\G 定期導出,分析死鎖、鎖等待、緩沖池命中率。SHOW TABLE STATUS 中 Data_free 大表示碎片多,需 OPTIMIZE TABLE。SHOW VARIABLES LIKE 'log_%' 快速檢查各類日志是否開啟。熟練掌握 SHOW 命令族,是 MySQL DBA 與開發者高效定位問題、優化性能的基本功。