首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 1067 錯誤與 "Plugin 'FEDERATED' is disabled" 根因排查:臨時文件目錄與 Redo Log 衝突雙重修復

     編輯:MySQL 綜合教學

MySQL 1067 錯誤與 "Plugin 'FEDERATED' is disabled" 根因排查:臨時文件目錄與 Redo Log 衝突雙重修復

現象:Windows 服務啟動失敗,系統事件日誌記錄「服務 mysql 意外停止」,MySQL 錯誤日誌顯示:

Plugin 'FEDERATED' is disabled
InnoDB: .\ibdata1 can't be opened in read-write mode
... 1067 進程意外終止

經驗證,核心原因有二:**臨時目錄權限缺失** 與 **舊 Redo Log 文件與新配置不匹配**。

根因 1:tmpdir 目錄不存在或無寫入權限

MySQL 啟動需創建臨時表文件、排序文件。若 tmpdir 指向的目錄不存在或服務用戶無權限,啟動即失敗。

修復

[mysqld]
tmpdir = "D:/MySQL/data/tmp"   # 確保目錄存在且 MYSQL 服務用戶有寫入權限
# 或使用系統臨時目錄 (需權限)
tmpdir = "C:/Windows/Temp"
mkdir D:\MySQL\data\tmp
icacls D:\MySQL\data\tmp /grant "NT SERVICE\MySQL56":(OI)(CI)F

根因 2:ib_logfile0/ib_logfile1 與 innodb_log_file_size 不匹配

修改 my.ini 中 innodb_log_file_size 後,舊 Redo Log 文件尺寸與配置不一致,InnoDB 拒絕啟動。

修復 (標準流程)

  1. 停止服務:net stop MySQL56
  2. 備份數據目錄 (可選但建議)
  3. 刪除 datadir 下的 ib_logfile0、ib_logfile1 (僅這兩個文件,勿刪 ibdata1、.ibd 表空間文件)
  4. 啟動服務:net start MySQL56 → InnoDB 自動按新尺寸創建 Redo Log
del D:\MySQL\data\ib_logfile0
del D:\MySQL\data\ib_logfile1
net start MySQL56

綜合修復驗證腳本 (批處理)

@echo off
REM fix_mysql_1067.bat
set DATADIR=D:\MySQL\data
set TMPDIR=D:\MySQL\data\tmp

echo [1] 停止服務...
net stop MySQL56 2>nul
timeout /t 3 /nobreak >nul

echo [2] 確保 tmpdir 存在並授權...
if not exist "%TMPDIR%" mkdir "%TMPDIR%"
icacls "%TMPDIR%" /grant "NT SERVICE\MySQL56":(OI)(CI)F /q

echo [3] 刪除舊 Redo Log...
if exist "%DATADIR%\ib_logfile0" del "%DATADIR%\ib_logfile0"
if exist "%DATADIR%\ib_logfile1" del "%DATADIR%\ib_logfile1"

echo [4] 啟動服務...
net start MySQL56

echo [5] 驗證...
mysql -u root -p -e "SHOW VARIABLES LIKE 'tmpdir'; SHOW VARIABLES LIKE 'innodb_log_file_size';"
pause

關鍵區分:哪些文件可刪,哪些絕不可刪

文件作用可否刪除後果
ib_logfile0 / ib_logfile1Redo Log (循環寫入)可刪 (服務停止時)重啟自動按配置重建,無數據損失
ibdata1系統表空間 (數據字典、Undo Log、雙寫緩衝、Change Buffer)絕不可刪所有表結構、數據、事務信息永久丟失
*.ibd獨立表空間 (file_per_table=ON)絕不可刪對應表數據永久丟失
*.frm / .sdi表結構定義 (5.7+ .sdi 序列化字典信息)絕不可刪表結構丟失,數據不可讀
auto.cnfServer UUID可刪 (重啟自動生成新 UUID)主從複製可能中斷需重做

總結

MySQL 1067 + FEDERATED disabled + ibdata1 can't be opened 組合拳,本質是 **啟動環境就緒檢查失敗**。雙重修復:**配置並授權 tmpdir + 刪除舊 Redo Log 讓 InnoDB 重建**。切記:**只刪 ib_logfile*,動 ibdata1 者死全家**。

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