# /etc/init.d/mysqld restart
Stopping MySQL [OK]
Timeout error occurred trying to start MySQL Daemon. [FAILED]
但實際上 MySQL 已成功啟動:netstat -ln 顯示 3306 端口監聽,mysql -u root -p 也能正常連線。
啟動腳本 /etc/init.d/mysqld 使用 mysqladmin ping 檢查服務是否就緒。預設腳本使用匿名用戶 UNKNOWN_MYSQL_USER,若系統已刪除匿名帳號或所有帳號設有密碼,ping 指令無法通過驗證,導致腳本誤判啟動失敗。
daemon 帳號專供啟動腳本使用:
mysql -u root -p
GRANT SELECT ON test.* TO 'daemon'@'localhost';
REVOKE SELECT ON test.* FROM 'daemon'@'localhost'; -- 移除權限,保留帳號
/etc/init.d/mysqld,將 ping 指令改用 daemon 帳號:
# 原始
ping="/usr/bin/mysqladmin -uUNKNOWN_MYSQL_USER ping"
# 修改為
ping="/usr/bin/mysqladmin -udaemon ping"
# /etc/init.d/mysqld restart
Stopping MySQL: [OK]
Starting MySQL: [OK]
啟動腳本需一個「能連線但無權限」的帳號執行 ping,避免安全風險同時滿足健康檢查需求。