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

解決 Windows 下 MySQL 服務啟動報錯誤 1053:服務未及時響應

     編輯:MySQL 資料庫相關知識

Windows 7/10/Server 上以服務模式啟動 MySQL 5.5/5.6/5.7 時,常遇到 錯誤 1053:服務未及時響應啟動或控制請求。實際上服務已在後台啟動完成,只是服務控制管理器 (SCM) 等待超時。本文解析成因並提供 3 種解決方案。

現象重現

net start mysql
# 系統錯誤 1053:服務未及時響應啟動或控制請求

# 或 services.msc 手動啟動,彈窗報相同錯誤
# 但實際執行 mysqld.exe --console 卻正常輸出:
# 130104 17:07:51 [Note] mysqld.exe: ready for connections.

根因分析

  • MySQL 啟動過程中初始化 InnoDB、載入插件、啟動執行緒池,**耗時可能超過 SCM 預設 30 秒逾時**。
  • SCM 未收到「服務已啟動」信號 (ServiceMain 未及時呼叫 SetServiceStatus(SERVICE_RUNNING)),判定啟動失敗。
  • 實際上 mysqld 進程已正常運行,接受連線無異常。

方案一:增加服務啟動逾時 (註冊表,永久生效)

# 1. 開啟註冊表編輯器
regedit

# 2. 定位
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control

# 3. 新建/修改 DWORD 值
ServicesPipeTimeout = 60000  (十進位,單位毫秒,即 60 秒)

# 4. 重啟電腦生效
shutdown /r /t 0

原理:SCM 輪詢服務狀態的最大等待時間從 30 秒延長至 60 秒 (或更長),給 MySQL 足夠初始化時間。

方案二:使用 mysqld.exe --console 前台啟動 (臨時/開發環境)

# 1. 停止服務
net stop mysql

# 2. 開啟 CMD (管理員),切換到 bin 目錄
cd "C:\Program Files\MySQL\MySQL Server 5.6\bin"

# 3. 前台啟動
mysqld.exe --console
# 視窗保持開啟,輸出即時日誌,Ctrl+C 停止

適合開發、測試、臨時排查,**不建議生產環境長期使用** (關閉視窗即停止服務)。

方案三:優化 MySQL 啟動速度 (治本)

[mysqld]
# 關閉不需要的儲存引擎
skip-federated
skip-archive
skip-blackhole

# 減少 InnoDB 初始化工作
innodb_buffer_pool_size = 512M        # 視記憶體調整,過大啟動慢
innodb_log_file_size = 128M           # 過大需更長恢復時間
innodb_flush_log_at_trx_commit = 2    # 啟動期可暫時放寬,正常建議 1

# 禁用 DNS 反解 (關鍵)
skip-name-resolve

# 跳過 grant tables (僅緊急救援)
# skip-grant-tables

調整後重啟服務觀察啟動耗時:

# PowerShell 計時
Measure-Command { Restart-Service mysql }

驗證與排查輔助

  • 查看 Windows 事件檢視器 → Windows Logs → System,來源 Service Control Manager,事件 ID 7000/7009 確認逾時細節。
  • MySQL 錯誤日誌 (data 目錄下 hostname.err) 確認無實際啟動失敗 (如 InnoDB 恢復失敗、埠衝突)。
  • 若方案一無效,檢查是否有防毒軟體攔截 mysqld.exe 載入 DLL、掃描 data 目錄導致 I/O 卡頓。

版本差異提示

版本預設安裝路徑服務名稱
5.5 / 5.6C:\Program Files\MySQL\MySQL Server 5.xmysql
5.7 / 8.0C:\Program Files\MySQL\MySQL Server 5.7/8.0mysql57 / mysql80
MariaDB 10.xC:\Program Files\MariaDB 10.xMariaDB

註冊表路徑通用,服務名稱對應修改 ServicesPipeTimeout 即可。

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