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.
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 足夠初始化時間。
# 1. 停止服務
net stop mysql
# 2. 開啟 CMD (管理員),切換到 bin 目錄
cd "C:\Program Files\MySQL\MySQL Server 5.6\bin"
# 3. 前台啟動
mysqld.exe --console
# 視窗保持開啟,輸出即時日誌,Ctrl+C 停止
適合開發、測試、臨時排查,**不建議生產環境長期使用** (關閉視窗即停止服務)。
[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 }
Service Control Manager,事件 ID 7000/7009 確認逾時細節。hostname.err) 確認無實際啟動失敗 (如 InnoDB 恢復失敗、埠衝突)。mysqld.exe 載入 DLL、掃描 data 目錄導致 I/O 卡頓。| 版本 | 預設安裝路徑 | 服務名稱 |
|---|---|---|
| 5.5 / 5.6 | C:\Program Files\MySQL\MySQL Server 5.x | mysql |
| 5.7 / 8.0 | C:\Program Files\MySQL\MySQL Server 5.7/8.0 | mysql57 / mysql80 |
| MariaDB 10.x | C:\Program Files\MariaDB 10.x | MariaDB |
註冊表路徑通用,服務名稱對應修改 ServicesPipeTimeout 即可。