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

MySQL Windows 服務啟動報錯 2003 / 1067 完整排查修復指南

     編輯:MySQL 資料庫相關知識

現象

  • 啟動服務報 Error 2003: Can't connect to MySQL server (客戶端連不上,實則服務未啟動成功)。
  • Windows 服務管理器啟動報 Error 1067: The process terminated unexpectedly (進程異常退出)。

標準修復流程 (解決 90% 情況)

  1. 以管理員身份打開 CMD / PowerShell。
  2. 移除現有服務:
    cd /d "C:\Program Files\MySQL\MySQL Server 8.0\bin"  # 進入 bin 目錄
    mysqld --remove
    
  3. 重新安裝服務 (自動讀取同目錄 my.ini):
    mysqld --install
    # 或指定配置文件與服務名
    mysqld --install MySQL80 --defaults-file="C:\Program Files\MySQL\MySQL Server 8.0\my.ini"
    
  4. 啟動服務:
    net start mysql
    # 或指定服務名
    net start MySQL80
    
  5. 看到 The MySQL service was started successfully. 即成功。

Error 1067 兩大核心原因深度排查

原因一:my.ini 中 basedir / datadir 路徑錯誤

[mysqld]
basedir=C:/Program Files/MySQL/MySQL Server 8.0/  # 必須用正斜槓或雙反斜槓,結尾帶斜槓
datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data/  # 數據目錄,需存在且 mysql 用戶可寫
  • 路徑含空格**無需加引號**,但建議避免空格路徑。
  • datadir 目錄下必須有初始化後的文件 (ibdata1, mysql 目錄等)。若為空,需先 mysqld --initialize-insecure。

原因二:默認存儲引擎不支援 (舊版本/精簡版常見)

[mysqld]
default-storage-engine=INNODB  # 若為精簡版無 InnoDB,啟動失敗

修復

# 修改為 MyISAM (不支援事務/外鍵,僅應急)
default-storage-engine=MYISAM
# 或安裝完整版 MySQL (含 InnoDB)

驗證:mysqld --verbose --help | findstr "default-storage-engine" 確認生效值。

進階排查清單 (上述無效時)

  1. 查看錯誤日誌:type "C:\ProgramData\MySQL\MySQL Server 8.0\Data\.err" (路徑視 datadir 而定),看最後報錯堆疊。
  2. 前台調試模式**:
    mysqld --console --defaults-file="C:\Program Files\MySQL\MySQL Server 8.0\my.ini"
    
    直接在終端輸出啟動日誌,Ctrl+C 停止,最直觀定位問題。
  3. 檢查端口佔用**:netstat -ano | findstr :3306,殺掉佔用進程或改端口。
  4. 權限問題**:確保 datadir 目錄權限允許運行服務的用戶 (通常為 SYSTEM 或指定服務賬號) 讀寫。右鍵目錄 → 安全 → 編輯 → 添加服務用戶完全控制。
  5. 防毒軟體攔截**:暫時關閉實時防護測試,或添加 mysqld.exe 白名單。
  6. 配置文件編碼**:my.ini 必須為 **UTF-8 無 BOM** 或 **ANSI**,UTF-8 BOM 會導致解析失敗。

避坑指南

  • **務必在 bin 目錄下執行命令**,否則找不到 mysqld.exe、my.ini。
  • **不要手動刪除 Data 目錄文件** 除非你完全明白後果 (需重新初始化)。
  • **服務名區分**:多實例時 --install ServiceName 指定唯一名稱,net start ServiceName 對應啟動。
  • **升級後必須運行** mysql_upgrade -u root -p 更新系統表,否則 1067 概率極高。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved