現象
重裝 MySQL 後,服務啟動失敗,報錯 Error 1067: The process terminated unexpectedly。
根因分析
通常因舊安裝殘留檔案或資料目錄殘損導致:
- 安裝目錄未完全清除
- `C:\ProgramData\MySQL` 隱藏資料目錄殘留
- `my.ini` 中 `datadir` 指向錯誤路徑
- `data` 目錄下舊 `ibdata1`/`ib_logfile*` 損壞
方案一:徹底重裝 (最乾淨)
- 控制台 → 程式與功能 → 解除安裝 MySQL 所有元件
- 手動刪除安裝目錄 (預設 `C:\Program Files\MySQL\MySQL Server X.Y`)
- 刪除資料目錄:
C:\ProgramData\MySQL (隱藏資料夾,需啟用顯示)
- 重新安裝 MySQL
- 服務應能正常啟動
方案二:修復現有安裝 (保留資料)
- 編輯 `my.ini` (安裝目錄或 `C:\ProgramData\MySQL\MySQL Server X.Y\my.ini`),確認 `datadir` 指向正確路徑:
[mysqld]
datadir="C:/Program Files/MySQL/MySQL Server 8.0/Data/"
- 進入 `datadir` 目錄,僅保留子資料夾 (各資料庫),刪除根目錄下所有檔案 (`ibdata1`, `ib_logfile*`, `*.err`, `*.pid`, `auto.cnf` 等)
- 管理員身分開啟 CMD:
net start mysql
- 應顯示
MySQL 服務已經啟動成功
常見誤區
| 誤區 | 正確做法 |
| 只刪除安裝目錄 | 必須同步清理 ProgramData 資料目錄 |
| 直接刪除 data 整個資料夾 | 會導致所有使用者資料庫遺失,應保留子資料夾 |
| 修改 my.ini 後未重啟服務 | 需 `net stop mysql && net start mysql` |
進階排查 (若上述無效)
- 檢查錯誤日誌:`datadir\.err`
- 檢查端口 3306 是否被佔用:`netstat -ano | findstr 3306`
- 以管理員身分執行 `mysqld --console` 直接觀察控制台輸出
- 檢查 `my.ini` 權限:確保 MySQL 服務帳戶對 `datadir` 有完整讀寫權限