A system error has occurred.
System error 1067 has occurred.
The process terminated unexpectedly.
Windows 服務管理器顯示「MySQL 服務正在啟動...」隨即失敗,事件檢視器記錄服務啟動超時或異常終止。
MySQL 5.5+ Windows 安裝若未生成 my.ini 或路徑錯誤,服務無法定位資料目錄。
# 位置:C:\Windows\my.ini 或 MySQL 安裝目錄\my.ini
[mysqld]
# 必須使用正斜線 / 或雙反斜線 \\
basedir=C:/Program Files/MySQL/MySQL Server 8.0
datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data
port=3306
socket=mysql.sock
[client]
port=3306
socket=mysql.sock
basedir:MySQL 安裝根目錄 (含 bin、share)datadir:資料目錄 (含 ibdata1、*.ibd、mysql 系統庫)異常關機、磁碟滿、參數變更導致 ib_logfile0/1 與 innodb_log_file_size 不匹配。
# 1. 停止服務
net stop mysql
# 2. 備份並刪除 (datadir 下)
rename ibdata1 ibdata1.bak
rename ib_logfile0 ib_logfile0.bak
rename ib_logfile1 ib_logfile1.bak
# 3. 啟動服務 (InnoDB 會自動重建)
net start mysql
⚠️ 警告:刪除 ibdata1 會導致**所有 InnoDB 表資料遺失**!僅在確認有完整備份或為全新安裝時操作。優先嘗試僅刪除 ib_logfile*。
某些精簡版 Windows 環境 InnoDB 初始化失敗 (記憶體不足、權限、相容性)。
[mysqld]
default-storage-engine=MyISAM
# 或禁用 InnoDB (不推薦生產)
skip-innodb
啟動成功後再改回 InnoDB 並調優參數。
# 管理員 CMD / PowerShell
sc delete mysql
sc delete mysql80
# 刪除註冊表殘留
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\mysql" /f
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\mysql80" /f
# 重新安裝服務
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --install MySQL80 --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini"
datadir → 屬性 → 安全性 → 編輯 → 新增 SYSTEM、Administrators、NETWORK SERVICE → 完全控制icacls "C:\ProgramData\MySQL\MySQL Server 8.0\Data" /grant "SYSTEM:(OI)(CI)F" "Administrators:(OI)(CI)F" "NETWORK SERVICE:(OI)(CI)F"netstat -ano | findstr :3306
# 若被佔用,找出 PID → 任務管理員結束進程,或修改 my.ini port=3307
Windows 會按順序讀取:
C:\Windows\my.iniC:\Windows\my.cnfC:\my.iniC:\my.cnfbasedir\my.inibasedir\my.cnfdatadir\my.ini保留**唯一一份**正確配置 (建議放在 datadir 或 basedir),刪除其他位置的 my.ini/my.cnf。
mysqld --install 在管理員 CMD/PowerShell 執行net start mysql 同樣需管理員權限1067 錯誤
│
├─→ 查看錯誤日誌 (datadir\*.err)
│ ├─ "Can't create test file" → 權限/路徑問題 → 方案一、五
│ ├─ "InnoDB: Log file size mismatch" → 方案二
│ ├─ "Unknown variable 'default-storage-engine=InnoDB'" → 版本不支援/拼寫錯 → 方案三
│ ├─ "Address already in use" → 方案六
│ └─ "Plugin 'InnoDB' registration failed" → 方案二、三、五
│
├─→ 檢查 my.ini 位置與內容 → 方案一、七
│
├─→ 檢查服務註冊 → 方案四、八
│
└─→ 事件檢視器 → 服務啟動超時 (30秒) → 增加服務啟動超時註冊表值
reg add "HKLM\SYSTEM\CurrentControlSet\Control" /v ServicesPipeTimeout /t REG_DWORD /d 120000 /f
# 120秒 = 120000毫秒,預設30秒
# 需重啟 OS 生效
| 操作 | 風險 | 正確做法 |
|---|---|---|
| 直接刪除 ibdata1 | 全量資料遺失 | 優先刪除 ib_logfile*;有備份才動 ibdata1 |
| my.ini 路徑用反斜線 \ | 轉義字元導致路徑錯誤 | 用正斜線 / 或雙反斜線 \\ |
| 多份 my.ini 共存 | 配置衝突、難排查 | 僅保留一份,其它刪除或改名 |
| 非管理員安裝/註冊服務 | 權限不足導致 1067 | 全程管理員權限 |
| 修改配置未重啟 | 以為生效實際未生效 | net stop/start mysql 或 systemctl restart |