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

MySQL 啟動報錯 1067 終極排查實錄:從路徑變更到 Data 目錄殘留檔案的完整避坑指南

     編輯:MySQL 資料庫相關知識

故障背景

MySQL 原安裝於 G:\sites\mysql,將資料夾重命名為 Inetpub 導致路徑變更 G:\Inetpub\mysql,服務啟動報錯 1067(進程意外中止)。

曲折排查全過程(14 步)

  1. 卸載服務:mysqld-nt -remove
  2. 重裝服務指定新配置:mysqld-nt -install MySQL --defaults-file="G:\Inetpub\mysql\my.ini"
  3. 嘗試啟動 → 1067
  4. 刪除 C:\winnt\my.ini(舊殘留) → 仍 1067
  5. 修正 my.ini 中 basedir/datadir 為新路徑 → 仍 1067
  6. 完全重裝 MySQL 到新路徑,保留 Data 目錄 → 仍 1067
  7. 清理註冊表所有 MySQL 鍵值,重啟 OS,第三次重裝 → 仍 1067
  8. Google 搜尋大量貼文誤導,嘗試多處放置 my.ini → 無效
  9. **關鍵轉折**:第四次重裝用**預設路徑**(C:\Program Files\MySQL\...)→ **啟動成功!**
  10. 對比成功實例 my.ini,發現 datadir 指向預設 data 目錄
  11. 卸載、第五次重裝到目標路徑 G:\Inetpub\mysql → 1067
  12. **定位核心**:將成功實例 my.ini 中 datadir 改為 G:/Inetpub/mysql/data/ → **1067 復發** → 證實**資料目錄/資料檔案問題**
  13. 進入 Data 目錄,**刪除根目錄下所有檔案**(保留子資料夾/資料庫目錄) → **啟動成功!**
  14. 總結:被 my.ini 配置誤導,忽略了 Data 目錄殘留檔案(如 ib_logfile*、ibdata1、.pid、.err)導致 InnoDB 恢復失敗

根因分析

  • InnoDB 啟動時讀取 ibdata1(系統表空間)、ib_logfile*(Redo Log)
  • 路徑遷移後,舊 Redo Log/表空間與新配置(innodb_log_file_size 等)不匹配
  • InnoDB 嘗試恢復失敗 → 進程中止 → Windows 回報 1067
  • 子資料夾(各資料庫 .frm/.MYD/.MYI/.ibd)不受影響,保留即可

標準遷移正確姿勢

# 1. 正常關閉
net stop MySQL

# 2. 複製整個安裝目錄(含 Data)到新位置

# 3. 修改新位置 my.ini basedir/datadir

# 4. 註冊服務指定新配置
mysqld --install MySQL --defaults-file="新路徑\my.ini"

# 5. 啟動驗證
net start MySQL

# 若必須清理 Data 目錄(如換機器、換版本):
# 只保留 子資料夾(資料庫目錄),刪除 ibdata1、ib_logfile*、*.pid、*.err、auto.cnf 等根目錄檔案

1067 通用排查清單

教訓總結

**錯誤日誌是第一生產力,配置檔是第二,搜尋引擎是第三。** 不要在 my.ini 上耗費數小時,而忽略 Data 目錄實體檔案狀態。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
檢查項指令/動作
錯誤日誌type "錯誤日誌路徑\主機名.err"(my.ini log-error 指定)
配置語法mysqld --verbose --help 2>&1 | head -20 檢查解析錯誤
權限服務啟動用戶對 basedir/datadir 讀寫權限
端口佔用netstat -ano | findstr 3306
Data 目錄殘留刪除 ibdata1/ib_logfile*/*.pid/*.err/auto.cnf(保留資料庫子目錄)
InnoDB 配置匹配innodb_log_file_size 變更需刪除舊 ib_logfile*
SELinux/AppArmorLinux 環境檢查審計日誌 ausearch -m avc