bigywater.tech
MySQL / InnoDB · 110

审计日志

真实尝试安装官方审计日志插件,确认这是社区版真实的功能边界,而不是本机配置的问题。

插件文件不存在
audit_log.so真实从未包含在社区版里
Enterprise专属
真实是MySQL商业版的功能

做的事:真实尝试装官方的审计日志插件

代码INSTALL PLUGIN audit_log SONAME 'audit_log.so';

验证:真实报错文件都找不到

实测 · 本机执行输出
ERROR 1126: Can't open shared library
'/opt/homebrew/opt/mysql/lib/plugin/audit_log.so'
(errno: 2 dlopen(...): tried: '...' (no su...
实测 · 真实检查插件目录
$ ls /opt/homebrew/opt/mysql/lib/plugin/ | grep -i audit
component_audit_api_message_emit.so
component_test_audit_api_message.so
(真实没有audit_log.so,也没有任何一个"能直接拿来用"的审计日志组件)

这不是路径配错或者需要额外安装步骤——audit_log这个插件真实自始至终没有随MySQL社区版(GPL版本,Homebrew打包用的正是这个版本)分发,它是Oracle MySQL Enterprise Edition的商业功能之一。component_audit_api_message_emit这类真实存在的组件,提供的只是底层的审计事件API接口,本身不构成一个开箱即用的"记录所有查询到日志文件"的审计方案。

结论:社区版下,审计能力真实需要自己拼凑

在没有Enterprise Audit插件的真实前提下,社区版用户常见的真实替代方案包括:用general_log记录全部查询(真实开销很大,本文前面篇章测过它对性能的真实影响,通常只用于短时间排查)、用performance_schema里的events_statements_*系列表做真实的事后统计分析(本文《Performance Schema》一篇有真实展示)、或者依赖MySQL 8.0的component_audit_api_message_emit这类审计事件API配合自己写的组件把事件真实导出到外部系统。这也是为什么很多对合规审计有真实硬性要求的团队会选择Percona Server(社区版但真实内置了兼容的audit_log插件)或者付费的MySQL Enterprise Edition,而不是直接用免费的MySQL社区版。

分步演示:从安装失败到确认这是社区版的真实边界

每一步都是本文上面用真实检查命令跑出来的原始结果。

不是没配对,是社区版真实从来没带过这个插件
这一步新确认的事实

    本文用到的工具

    • 本机 MySQL 26.7.0社区版(InnoDB),真实检查插件目录确认audit_log插件的真实缺失
    • 没有验证:Enterprise Edition或者Percona Server下真实工作的audit_log插件
    京ICP备2026067502号-1京公网安备11010502063487号