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

MySQL 1067 錯誤完整排查指南:Windows 服務啟動失敗八大原因與解決方案

     編輯:MySQL 資料庫相關知識

MySQL 1067 錯誤 (The process terminated unexpectedly) 是 Windows 環境下服務啟動失敗的通用錯誤碼,**非具體原因**。本文彙總八大高頻根因、排查步驟、修復命令與預防配置,助你快速定位解決。

一、 錯誤現象

net start mysql
MySQL 服務正在啟動...
系統發生 1067 錯誤。
進程意外終止。

二、 八大根因與解決方案

1. 配置文件 my.ini 缺失、路徑錯誤、編碼損壞 (最高頻)

  • 現象: MySQL 讀不到 basedir/datadir,或文件為 Unix 換行符 (LF) 導致 Notepad 顯示亂碼。
  • 修復:
    1. 確認 %WINDIR%\my.ini (C:\Windows\my.ini) 存在。
    2. 內容至少包含:
      [mysqld]
      basedir=D:/MySQL
      datadir=D:/MySQL/data
    3. 用 **Write/Notepad++/VS Code** 編輯保存為 **UTF-8 無 BOM / Windows 換行符 (CRLF)**。
    4. 若無 my.ini,從安裝目錄複製 my-default.ini 重命名修改。

2. 殘留舊服務導致衝突 (重裝/升級高發)

  • 現象: 服務名 mysql 已存在,新實例無法註冊。
  • 修復:
    sc delete mysql
    # 成功提示:[SC] DeleteService SUCCESS
    # 再重新運行 MySQL Instance Configuration Wizard

3. 數據目錄權限不足 (System/Network Service 無讀寫權)

  • 修復: 右鍵 datadir → 屬性 → 安全 → 編輯 → 添加 SYSTEM、NETWORK SERVICE → 完全控制。

4. 端口 3306 被佔用

  • 排查: netstat -ano | findstr 3306 找 PID,任務管理器殺進程或改配置 port=3307。

5. ibdata1/ib_logfile 損壞或版本不匹配

  • 現象: 錯誤日誌 (.err) 顯示 InnoDB: Log file size mismatch 或 corrupted。
  • 修復: 刪除 ib_logfile* (重啟自建);ibdata1 損壞需從備份恢復或 innodb_force_recovery=1..6 導出數據重建。

6. 配置文件中路徑分隔符錯誤

  • 錯誤: basedir=C:\MySQL (反斜桿需轉義或用正斜桿)。
  • 正確: basedir=C:/MySQL 或 basedir=C:\\MySQL。

7. 缺少 Visual C++ Redistributable (MySQL 5.7+/8.0 依賴 VC++ 2015/2019)

8. 錯誤日誌目錄不可寫

  • 排查: log-error 指定目錄是否存在、服務賬號是否有寫入權。

三、 標準排查流程 (SOP)

  1. 看錯誤日誌: type "D:\MySQL\data\hostname.err" (或配置的 log-error 路徑) — **最直接定位根因**。
  2. 檢查 my.ini: 路徑、編碼、basedir/datadir、端口。
  3. 清理殘留: sc delete mysql、刪除舊數據目錄 (非生產)。
  4. 手動前台啟動驗證:
    cd /d D:\MySQL\bin
    mysqld --console --defaults-file="D:\MySQL\my.ini"
    控制台直接輸出啟動日誌,一眼定位報錯行。
  5. 修復後重啟服務: net start mysql。

四、 正確停止服務避免 1067

# 錯誤方式:net stop mysql (可能報 1067 但實際已停)
# 正確方式:
mysqladmin -u root -p shutdown

五、 預防配置模板 (my.ini 核心段)

[mysqld]
basedir = D:/MySQL
datadir = D:/MySQL/data
port = 3306
character-set-server = utf8mb4
default-storage-engine = InnoDB
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 1
max_connections = 500
sql_mode = STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

[client]
default-character-set = utf8mb4
port = 3306

六、 總結

**1067 是果,非因**。核心排查三步:**看錯誤日誌 → 驗證 my.ini → 手動前台啟動**。90% 情況是 my.ini 路徑/編碼/權限問題。建立標準配置模板、使用 mysql_secure_installation、定期備份 ibdata1/ib_logfile*,可從根源消除 1067 鬼魅。

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