在開發、測試甚至生產環境中遇到 MySQL 故障時,大多數開發者習慣通過技術論壇、QQ 群或社群求助。雖然這些途徑確實有效,但在無網絡的生產環境中,這些外部資源便無法使用。事實上,無論是哪種數據庫系統,官方文檔始終是最直接、最權威的幫助來源。其次,MySQL 客戶端工具內建的幫助系統在離線環境下能發揮關鍵作用。
同 Oracle 官方文檔一樣,MySQL 官方手冊是獲取幫助的首選。它涵蓋了 SQL 語法、安裝部署、系統/狀態變量、命令行工具、數據庫管理等幾乎所有主題,堪稱 MySQL 知識的「大全集」。手冊支持 PDF 和 HTML 兩種格式下載,方便離線查閱。
下載地址: https://dev.mysql.com/doc/
在 MySQL 提示符下輸入 help 或 \h 即可獲取客戶端命令列表,功能類似 Oracle SQL*Plus 的 help 命令。以下是常用客戶端命令速查表:
| 命令 | 縮寫 | 說明 |
|---|---|---|
connect | \r | 重新連接服務器,可選參數 db 和 host。常用於連接被斷開後重連 |
delimiter | \d | 設置語句結束符,默認為分號;可改為 / 等 |
edit | \e | 將緩衝區上一條 SQL 編輯到文件(默認調用 vi,文件位於 /tmp) |
ego | \G | 垂直顯示查詢結果 |
exit/quit | \q | 退出 MySQL 客戶端 |
go | \g | 發送命令到 MySQL 服務器執行 |
nopager | \n | 禁用分頁器,輸出到標準輸出 |
notee | \t | 關閉輸出到文件 |
pager | \P | 設置分頁器(如 more、less),用於分頁顯示長結果 |
prompt | \R | 修改 MySQL 提示符 |
rehash | \# | 重建補全哈希,用於自動補齊對象名 |
source | \. | 執行 SQL 腳本文件 |
status | \s | 獲取服務器狀態信息 |
system | \! | 執行系統 Shell 命令 |
tee | \T | 將操作結果追加輸出到指定文件(類似 SQL*Plus 的 spool) |
use | \u | 切換數據庫 |
charset | \C | 切換字符集,處理多字節字符集的 binlog 時有用 |
warnings/nowarning | \W/\w | 開啟/關閉每條語句後顯示警告 |
提示: 輸入 help contents 可進入服務端幫助系統,獲取 SQL 語法、管理命令、函數等詳細文檔。
mysql> connect chardb localhost;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Connection id: 5
Current database: chardb
mysql> pager more
PAGER set to 'more'
mysql> select table_name,table_type,engine from information_schema.tables;
-- 結果超過一屏時,按空格鍵翻頁
mysql> pager tail -5
PAGER set to 'tail -5'
mysql> select table_name,table_type,engine from information_schema.tables;
| setup_timers | BASE TABLE | PERFORMANCE_SCHEMA |
| threads | BASE TABLE | PERFORMANCE_SCHEMA |
| animals | BASE TABLE | InnoDB |
| shop | BASE TABLE | InnoDB |
+----------------------------------------------+-------------+--------------------+
92 rows in set (0.02 sec)
mysql> nopager
PAGER set to stdout
mysql> tee /tmp/query.log
Logging to file '/tmp/query.log'
mysql> select table_name,table_type,engine from information_schema.tables;
...
mysql> notee
Outfile disabled.
mysql> system tail /tmp/query.log
-- 查看剛寫入的日志內容
mysql> prompt SessionA>
PROMPT set to 'SessionA> '
SessionA> prompt
Returning to default PROMPT of mysql>
mysql> source query.sql
Reading table information for completion of table and column names
Database changed
+------+-------+
| id | value |
+------+-------+
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | f |
+------+-------+
4 rows in set (0.00 sec)
mysql> status;
--------------
mysql Ver 14.14 Distrib 5.5.37, for Linux (x86_64) using readline 5.1
Connection id: 6
Current database: chardb
Current user: root@localhost
Server version: 5.5.37-log MySQL Community Server (GPL)
Uptime: 3 hours 10 min 59 sec
Threads: 1 Questions: 97 Slow queries: 0
...
mysql> charset gbk;
Charset changed
mysql> \s
-- 可見 Client characterset 和 Conn. characterset 均變為 gbk
mysql> warnings;
Show warnings enabled.
mysql> selecs 1;
ERROR 1064 (42000): You have an error in your SQL syntax...
mysql> show warnings;
+-------+------+--------------------------------------------------------------------+
| Level | Code | Message |
+-------+------+--------------------------------------------------------------------+
| Error | 1064 | You have an error in your SQL syntax... |
+-------+------+--------------------------------------------------------------------+
mysql> nowarning;
Show warnings disabled.
輸入 help contents 可查看所有幫助類別,如 Account Management、Administration、Data Definition、Functions、Storage Engines 等。再通過 help <類別> 逐級鑽取,最終獲得具體命令的語法、權限要求、示例等完整信息。
-- 查看管理命令分類
mysql> help administration;
-- 查看 FLUSH 語法詳情
mysql> help flush;
Name: 'FLUSH'
Description: Syntax: FLUSH [NO_WRITE_TO_BINLOG | LOCAL] flush_option [...]
The FLUSH statement has several variant forms that clear or reload various internal caches...
URL: https://dev.mysql.com/doc/refman/5.5/en/flush.html
-- 查看 CACHE INDEX 語法
mysql> help CACHE INDEX;
Name: 'CACHE INDEX'
Syntax: CACHE INDEX tbl_index_list [...] IN key_cache_name
-- 查看 SHOW 命令所有變體
mysql> help show;
-- 查看 SET 變量賦值語法
mysql> help set;
Name: 'SET'
Syntax: SET variable_assignment [, variable_assignment] ...
variable_assignment: user_var_name = expr | [GLOBAL | SESSION] system_var_name = expr ...
URL: https://dev.mysql.com/doc/refman/5.5/en/set-statement.html
總結: 通過 help 逐級鑽取,無需聯網即可獲得權威、完整的語法參考,是 DBA 和開發者離線排查問題的利器。