MySQL 安裝完成後,必須執行標準化驗證,確保服務正常、網絡通信、權限體系、字符集配置均符合預期。本文提供可直接執行的命令清單。
# 1. 列出所有數據庫(驗證服務進程、權限、網絡)
mysqlshow -u root -p
# 2. 列出 mysql 系統庫的表(驗證系統庫完整性)
mysqlshow -u root -p mysql
# 3. 顯示服務器版本、狀態、進程(驗證版本、運行狀態、線程池)
mysqladmin -u root -p version status processlist
# 4. 簡單查詢測試(驗證 SQL 執行引擎)
mysql -u root -p -e "SELECT VERSION(), NOW(), USER();"
# 5. 字符集驗證(關鍵)
mysql -u root -p -e "SHOW VARIABLES LIKE '%char%';"
mysql -u root -p -e "SHOW VARIABLES LIKE '%collation%';"
# 除 character_set_filesystem=binary 外,應全為 utf8/utf8mb4
# 6. 數據庫級字符集驗證
mysqlshow -u root -p -i db_name
# 檢查 Collation 列是否為 utf8_general_ci / utf8mb4_0900_ai_ci
現象:客戶端連接緩慢(>5s),查詢執行快。
原因:服務器嘗試對客戶端 IP 做 PTR 反解析,DNS 超時。
解決:
my.cnf 添加 skip-name-resolve(禁用 DNS 解析,權限表 Host 列只能用 IP/localhost)。/etc/hosts。# Windows 命名管道
mysql -u root -p --pipe --protocol=PIPE --socket=MySQL
# Linux/Unix Socket
mysql -u root -p --socket=/tmp/mysql.sock
# 或指定主機為 .
mysql -u root -p -h .
| 檢查項 | 命令 | 預期結果 | 異常處理 |
|---|---|---|---|
| 服務進程 | ps -ef | grep mysqld | 進程存在、用戶正確 | 檢查錯誤日誌、權限、端口衝突 |
| 端口監聽 | netstat -tlnp | grep 3306 | LISTEN 狀態 | 防火牆、bind-address、SELinux |
| 本地連接 | mysql -u root -p -e "SELECT 1" | 返回 1 | Socket 路徑、密碼、權限表 |
| 遠程連接 | mysql -h IP -u user -p | 連接成功 | 授權表 Host、防火牆、skip-name-resolve |
| 字符集 | SHOW VARIABLES LIKE '%char%'; | 全 utf8/utf8mb4 | 修改 my.cnf、重建庫表 |
| 系統庫完整 | mysqlshow mysql | 含 user、db、tables_priv 等表 | 重新 mysql_install_db |
將上述命令封裝為 verify_mysql_install.sh,納入部署腳本,**自動化驗證、零人工疏漏**。