mysql审计配置主要通过企业版Audit Log插件或社区版McAfee插件实现。1. 企业版需安装audit_log插件,配置audit_log_format、policy、include/exclude账户及日志路径;2. 社区版可编译McAfee插件,安装后设置audit_json_log_file等变量并定义过滤规则;3. 均需验证插件状态并管理日志存储与安全。

MySQL 中配置审计插件主要依赖于官方提供的 MySQL Enterprise Audit 插件(属于商业版功能),或者社区环境中常用的开源替代方案如 McAfee MySQL Audit Plugin。以下以这两种方式分别说明如何配置。
启用 MySQL 企业审计插件(Enterprise Edition)
如果你使用的是 MySQL 企业版,可直接加载审计插件:
1. 检查插件是否可用:
登录 MySQL 执行:
SHOW PLUGINS;
查看是否有 “audit_log” 插件及其状态。
2. 安装审计插件:
如果未安装,运行:
INSTALL PLUGIN audit_log SONAME ‘libaudit_plugin.so’;
3. 配置审计日志输出位置和格式:
编辑 my.cnf 或 my.ini 配置文件,在 [mysqld] 段添加:
[mysqld]
audit_log_format = NEW
audit_log_policy = ALL
audit_log_include_accounts = ‘admin_user@localhost’
audit_log_exclude_accounts = ‘readonly_user@%’
audit_log_file = /var/log/mysql/audit.log
- audit_log_format:设置日志格式,NEW 更详细,json 格式。
- audit_log_policy:ALL 表示记录所有事件;LOGINS 只记录登录;QUERIES 只记录查询。
- include/exclude_accounts:控制哪些用户被审计。
- audit_log_file:指定日志路径,确保目录有写权限。
4. 重启 MySQL 或重新加载插件:
修改配置后重启服务,或执行:
UNINSTALL PLUGIN audit_log;
INSTALL PLUGIN audit_log SONAME ‘libaudit_plugin.so’;
使用 McAfee 开源审计插件(适用于社区版)
MySQL 社区版不包含企业审计插件,可通过 McAfee 提供的开源审计插件实现类似功能。
1. 下载插件:
项目地址:https://www.php.cn/link/b12b646e693cbf411f8eaae5204ffdfe
下载并编译生成 libaudit_plugin.so。
2. 安装插件:
将 .so 文件复制到 MySQL 插件目录(通常为 /usr/lib/mysql/plugin/),然后在 MySQL 中执行:
INSTALL PLUGIN AUDIT soname ‘libaudit_plugin.so’;
3. 配置审计行为:
通过动态系统变量控制审计行为,例如:
SET GLOBAL audit_json_log_file = ‘/var/log/mysql/mcafee_audit.json‘;
SET GLOBAL audit_json_socket = 0;
SET GLOBAL audit_record_history = 1;
- 通过 audit_json_filter 设置过滤规则,只记录特定用户或操作。
- 可创建过滤策略表来精细化控制审计范围。
4. 验证插件是否运行:
执行:
select * FROM information_schema.plugins WHERE plugin_name = ‘AUDIT’;
检查状态是否为 ACTIVE,并查看日志文件是否生成内容。
审计日志管理建议
- 定期归档和清理审计日志,避免磁盘占满。
- 设置合适的审计策略,避免记录过多无用信息影响性能。
- 确保日志文件权限安全,仅允许 dba 访问。
- 结合外部日志分析工具(如 elk、Splunk)进行集中审计分析。
基本上就这些。企业版用内置插件更稳定,社区版推荐 McAfee 方案,配置灵活但需自行维护编译。关键是根据安全需求设定合理的审计范围和日志保留策略。


