首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

解決 MySQL 啟動報錯 "Timeout error occurred trying to start MySQL Daemon"

     編輯:MySQL 資料庫相關知識

現象描述

# /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 指令無法通過驗證,導致腳本誤判啟動失敗。

解決步驟

  1. 建立無密碼、無權限的 daemon 帳號專供啟動腳本使用:
    mysql -u root -p
    GRANT SELECT ON test.* TO 'daemon'@'localhost';
    REVOKE SELECT ON test.* FROM 'daemon'@'localhost';  -- 移除權限,保留帳號
  2. 修改啟動腳本 /etc/init.d/mysqld,將 ping 指令改用 daemon 帳號:
    # 原始
    ping="/usr/bin/mysqladmin -uUNKNOWN_MYSQL_USER ping"
    
    # 修改為
    ping="/usr/bin/mysqladmin -udaemon ping"
  3. 重啟驗證:
    # /etc/init.d/mysqld restart
    Stopping MySQL:  [OK]
    Starting MySQL:  [OK]

核心原理

啟動腳本需一個「能連線但無權限」的帳號執行 ping,避免安全風險同時滿足健康檢查需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved