最可靠方式是查询information_schema.PLUGINS表:SELECT PLUGIN_NAME, PLUGIN_STATUS, PLUGIN_TYPE, LOAD_OPTION FROM information_schema.PLUGINS WHERE PLUGIN_STATUS = 'ACTIVE';PLUGIN_STATUS为ACTIVE表示已启用,DISABLED表示配置中被禁用;LOAD_OPTION为ON/OFF表示启动时是否自动加载,FORCE表示强制加载;部分插件如mysqlx属DAEMON类型,仍可查到。

如何查看 MySQL 当前加载的插件(Plugin)列表
MySQL 本身没有“模块”概念,用户实际想查的是已安装并启用的插件(如 audit_log、validate_password、semisync_master 等)。这些插件通过 INSTALL PLUGIN 或配置文件加载,运行时可直接查系统表。
最可靠的方式是查询 information_schema.PLUGINS 表:
SELECT PLUGIN_NAME, PLUGIN_STATUS, PLUGIN_TYPE, LOAD_OPTION FROM information_schema.PLUGINS WHERE PLUGIN_STATUS = 'ACTIVE';
-
PLUGIN_STATUS为ACTIVE表示当前已启用;DISABLED表示在配置中被禁用(如plugin_load_add = ''或disabled);DISABLED不等于“未安装”,只是没加载 - 注意
LOAD_OPTION字段:值为ON/OFF表示是否在启动时自动加载;FORCE表示强制加载(即使失败也不报错) - 部分插件(如
mysqlx)可能属于服务类型(PLUGIN_TYPE = 'DAEMON'),不会出现在普通功能插件列表里,但同样能查到
为什么 SHOW PLUGINS 返回空或不全?
常见于 MySQL 8.0+ 默认启用 information_schema_stats_expiry = 86400,导致 information_schema 缓存过期后元数据可能延迟刷新,尤其刚装完插件就查容易漏。
- 临时解决:执行
FLUSH TABLES information_schema;强制刷新缓存 - 根本办法:检查是否真执行了
INSTALL PLUGIN,而不是只改了配置文件——配置项(如plugin_load_add = validate_password)需重启 MySQL 才生效,而 SQL 命令是即时的 - 权限限制:
SELECT权限只够看information_schema.PLUGINS,但看不到插件具体参数;要查performance_schema中的插件变量,需要SELECT权限 +PROCESS权限
从配置文件确认插件是否被声明加载
很多插件靠配置驱动,比如 my.cnf 里的 plugin_load_add 或 loose_ 前缀项。仅靠运行时查询可能遗漏“已声明但尚未启动”的插件。
- 检查配置文件中是否存在类似以下行:
plugin_load_add = "validate_password;semisync_master"或loose_validate_password=ON -
loose_前缀表示“忽略该选项不存在时的错误”,常用于兼容性控制,不代表插件一定存在或可用 - MySQL 启动时若发现插件文件缺失(如
validate_password.so在plugin_dir下找不到),会记录警告到错误日志,但不一定中断启动——得去error.log翻Could not open required plugin library这类信息
插件文件路径和依赖怎么看?
插件本质是动态库文件(Linux 是 .so,macOS 是 .dylib,Windows 是 .dll),位置由 plugin_dir 系统变量决定。
查路径:
SELECT @@plugin_dir;
- 进对应目录用
ls -l看文件是否存在,再用file或ldd(Linux)检查依赖:例如ldd validate_password.so | grep "not found"可暴露缺失的 libc 或 OpenSSL 版本 - MySQL 5.7 默认插件放在
lib/plugin/,8.0+ 部分插件(如component_mysql_clone)改用组件机制,走mysql.component表,不在传统插件目录下 - 别直接删
.so文件——哪怕插件状态是DISABLED,MySQL 启动时仍会尝试加载,缺失会导致警告甚至某些初始化失败
插件不是装上就万事大吉,状态、路径、依赖、配置、权限这五处任何一环断掉,都可能让一个“已安装”的插件实际不可用。


















