MySQL 無法啟動時,切勿盲目重裝。本文整理標準化排查路徑:日誌優先、前台調試、服務安裝參數、防火牆/權限/配置檔路徑等關鍵點。
hostname.err(Linux 多在 /var/log/mysql/error.log 或 /var/lib/mysql/*.err)。--log-error=/path/to/error.log。mysqld --verbose --help | grep log-error 查看實際路徑。# Windows
mysqld --defaults-file="D:\wamp\bin\mysql\mysql5.5.20\my.ini" --console
# Linux
mysqld --defaults-file=/etc/my.cnf --user=mysql --console
前台運行會將錯誤直接輸出到終端,若卡住不退出說明啟動成功(可另開終端測試連線);若報錯退出則直接可見原因。
mysqld --install MySQL57
# 讀取順序:
# C:\Windows\my.ini
# C:\Windows\my.cnf
# C:\my.ini
# C:\my.cnf
# D:\wamp\bin\mysql\mysql5.5.20\my.ini
# D:\wamp\bin\mysql\mysql5.5.20\my.cnf
# 參數順序關鍵:--install 必須在 --defaults-file 之前
mysqld --install MySQL57 --defaults-file="D:\wamp\bin\mysql\mysql5.5.20\my.ini"
# 成功提示
Service successfully installed.
安裝後服務啟動命令實際為:
D:\wamp\bin\mysql\mysql5.5.20\bin\mysqld.exe --defaults-file="D:\wamp\bin\mysql\mysql5.5.20\my.ini" MySQL57
net start MySQL57
# 或
sc start MySQL57
| 現象 | 可能原因 | 排查命令/動作 |
|---|---|---|
| 服務啟動後立即停止 | 配置檔路徑錯、datadir 權限、端口佔用、my.ini 語法錯 | 前台 --console 看輸出;netstat -ano \| findstr 3306 |
| Can't create test file | datadir 目錄不存在或無寫入權限 | mkdir datadir && chown -R mysql:mysql datadir |
| Unknown variable 'xxx' | my.ini 參數拼寫錯或版本不支援 | mysqld --help --verbose \| grep xxx |
| InnoDB: Unable to lock ./ibdata1 | 另一實例在運行、殘留進程、權限 | ps -ef \| grep mysqld; kill -9; 檢查鎖文件 |
| Plugin 'InnoDB' registration failed | ib_logfile 損壞、大小不匹配 innodb_log_file_size | 停庫、刪除 ib_logfile*、重啟(會重建) |
systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld
journalctl -u mysqld -f # 即時看日誌
核心原則:日誌第一、前台第二、服務第三。永遠先看錯誤日誌,再用前台模式復現,最後才考慮服務安裝參數。