MySQL 服務啟動失敗,錯誤日誌顯示 Plugin 'FEDERATED' is disabled 並伴隨 InnoDB: unable to create temporary file、Unknown/unsupported table type: INNODB。本文記錄排查過程與根因修復。
121012 11:35:03 [Note] Plugin 'FEDERATED' is disabled.
121012 11:35:03 InnoDB: Error: unable to create temporary file; errno: 2
121012 11:35:03 [ERROR] Plugin 'InnoDB' init function returned error.
121012 11:35:03 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
121012 11:35:03 [ERROR] Unknown/unsupported table type: INNODB
121012 11:35:03 [ERROR] Aborting
Plugin 'FEDERATED' is disabled 僅是告警(Note 級別),非致命錯誤。真正導致啟動失敗的是:
InnoDB: unable to create temporary file; errno: 2 → 臨時目錄不可寫或不存在# 查看當前 tmpdir 設置
SHOW VARIABLES LIKE 'tmpdir';
-- 可能為空或指向不可寫路徑
# 進入數據目錄
cd /var/lib/mysql # 或 my.cnf 中 datadir 路徑
# 備份後刪除(MySQL 重啟會自動重建)
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak
編輯 my.cnf (Linux) 或 my.ini (Windows):
[mysqld]
# 必須指定存在且 MySQL 進程可寫的目錄
tmpdir = "/tmp" # Linux 常用
# tmpdir = "E:/MySQL/Temp/" # Windows 示例
# 建議同時設置
innodb_temp_data_file_path = ibtmp1:12M:autoextend
tmpdir 目錄存在:mkdir -p /tmp && chown mysql:mysql /tmpib_logfile*service mysqld restart 或 systemctl restart mysqldunable to create temporary fileCREATE TABLE t (id INT) ENGINE=INNODB; 成功| 網傳方案 | 評價 | 正確做法 |
|---|---|---|
| 刪除 data 目錄下所有非庫文件夾文件 | 過度暴力,可能丟失數據 | 僅刪除 ib_logfile* 並配置 tmpdir |
| 關閉 FEDERATED 插件 | 治標不治本,FEDERATED 非致命 | 忽略該 Note,聚焦 InnoDB 初始化 |
| 重裝 MySQL | 殺雞用牛刀,配置問題非代碼問題 | 修正配置,保留數據目錄 |
my.cnf 必須顯式配置 tmpdir 指向大空間、可寫目錄ib_logfile* 是否完整innodb_dedicated_server=ON (MySQL 8.0+) 自動調優MySQL 啟動報 Plugin FEDERATED is disabled 實為 InnoDB 臨時文件創建失敗 的連帶現象。核心修復:配置有效 tmpdir + 清理舊 redo log。切勿被表象錯誤誤導,直擊存儲引擎初始化鏈路。