“Plugin 'FEDERATED' is disabled”是MySQL启动时的普通日志,真正问题常在其前后几行,如mysql.plugin表缺失或InnoDB初始化失败;需优先检查tmpdir/datadir路径权限及ibdata1配置匹配性。

这个提示本身不是错误,而是MySQL启动时的普通日志说明;真正的问题往往藏在它前后几行——比如 Table 'mysql.plugin' doesn't exist 或 InnoDB init function returned error。
为什么看到“Plugin 'FEDERATED' is disabled”就该警惕
MySQL 5.6 及更早版本默认编译进 FEDERATED 引擎,但默认不启用;5.7+ 默认不编译,SHOW PLUGINS 里根本不会出现它。所以你看到这行日志,大概率是以下情况之一:
- MySQL 实例刚初始化完,
mysql.plugin表还没生成(常见于手动执行mysqld --initialize后直接启动) - 配置文件里写了
skip-federated(显式禁用),或漏掉了datadir/tmpdir路径导致初始化失败 - 更关键的是:它常和
InnoDB启动失败共现——比如ibdata1文件大小与innodb_data_file_path配置不匹配,此时FEDERATED只是“陪跑报错”
检查 mysql.plugin 表是否存在(最常被忽略的一步)
先确认是不是真缺这张表,而不是插件被禁:
- 用
mysqld --skip-grant-tables启动(跳过权限验证) - 连上后执行:
SELECT COUNT(*) FROM mysql.plugin; - 如果报错
Table 'mysql.plugin' doesn't exist,说明初始化没走完——必须补:mysql_install_db --user=mysql --datadir=/path/to/your/datadir(注意路径要和配置中datadir一致) - 5.7.6+ 版本改用:
mysqld --initialize --user=mysql --datadir=/path/to/datadir,完成后会生成临时 root 密码,别丢
启用 FEDERATED 的两种方式及适用场景
只有确认 mysql.plugin 存在、且 SHOW PLUGINS 显示 FEDERATED 状态为 DISABLED 时,才需要启用:
- 配置文件启用(推荐):在
[mysqld]段下加一行federated(不是plugin-load,也不是loose-federated) - 运行时启用(临时):执行
INSTALL PLUGIN federated SONAME 'ha_federated.so';——但要注意:ha_federated.so文件必须存在于plugin_dir目录下;Windows 是ha_federated.dll - 若执行
INSTALL PLUGIN报错Function 'INSTALL PLUGIN' does not exist,说明 MySQL 编译时没带--with-federated-storage-engine,只能重装或换版本
tmpdir 和 datadir 路径错误才是真正的“启动杀手”
大量用户反馈“加了 federated 还是启动失败”,翻日志发现真实原因是路径问题:
-
tmpdir指向一个不存在的目录,或当前用户无写权限 → MySQL 启动卡在初始化阶段,连mysql库都建不全 -
datadir指向空目录,或残留了旧版本的ib_logfile*/ibdata1,而innodb_data_file_path配置与实际文件大小不符 → 直接触发InnoDB初始化失败,后续所有插件加载都会中断 - 实操建议:
tmpdir设为系统临时目录(如/tmp或C:\Windows\Temp),datadir必须指向一个干净、可写的目录;若要复用旧数据,先比对ibdata1文件大小和配置中的数值
真正卡住 MySQL 启动的,从来不是 “FEDERATED 是否启用”,而是底层存储引擎能否完成初始化。盯紧日志里 InnoDB 和 mysql.plugin 相关的那几行,比反复修改 federated 配置有用得多。


















