MySQL 5.7默认的审计能力较弱,无法满足企业对数据库操作记录、安全合规的审计需求,借助McAfee Audit这类第三方插件可以快速实现数据库级别的审计功能,完整记录所有数据库操作行为。

McAfee Audit插件简介
McAfee Audit插件是MySQL官方社区认可的第三方审计插件,支持MySQL 5.7及以上版本,能够记录所有连接、查询、表操作等数据库行为,审计日志支持输出到文件或者系统日志,方便后续分析和留存。
插件安装前准备
首先需要确认MySQL 5.7的版本和操作系统架构,下载对应版本的McAfee Audit插件,插件文件通常为audit_log.so(Linux系统)或者audit_log.dll(Windows系统)。
安装前需要确认MySQL的服务运行用户有插件目录的读写权限,同时建议先对数据库进行全量备份,避免安装过程中出现意外导致数据问题。
插件安装与配置步骤
1. 上传插件文件
将下载好的插件文件上传到MySQL的插件目录下,可以通过以下SQL语句查询插件目录位置:
SHOW VARIABLES LIKE 'plugin_dir';
2. 安装插件
使用root用户登录MySQL,执行以下命令安装插件:
INSTALL PLUGIN audit_log SONAME 'audit_log.so';
如果是Windows系统,需要将audit_log.so替换为audit_log.dll。
3. 配置审计参数
安装完成后需要配置审计相关的参数,常用的配置项如下:
- audit_log_format:审计日志格式,可选OLD、NEW、JSON,推荐使用JSON格式方便解析
- audit_log_policy:审计策略,可选ALL、LOGINS、QUERIES、NONE,ALL表示记录所有操作
- audit_log_file:审计日志文件路径,默认在MySQL数据目录下
- audit_log_rotate_on_size:日志文件达到指定大小后自动轮转,单位字节
可以通过以下命令动态修改参数,也可以写入MySQL配置文件my.cnf永久生效:
-- 动态修改参数 SET GLOBAL audit_log_format = 'JSON'; SET GLOBAL audit_log_policy = 'ALL'; SET GLOBAL audit_log_file = '/var/log/mysql/audit.log'; SET GLOBAL audit_log_rotate_on_size = 104857600; -- 100MB
如果要永久生效,在my.cnf的[mysqld] section添加以下内容:
[mysqld] plugin_load_add = audit_log.so audit_log_format = JSON audit_log_policy = ALL audit_log_file = /var/log/mysql/audit.log audit_log_rotate_on_size = 104857600
4. 验证插件状态
执行以下命令查看插件是否安装成功:
SHOW PLUGINS;
如果看到audit_log的状态为ACTIVE,说明插件已经正常运行。
审计日志查看与分析
审计日志默认输出到配置的文件路径,JSON格式的日志每条记录都是一个独立的JSON对象,包含操作时间、用户、操作类型、SQL语句等信息。以下是一个日志示例:
{
"timestamp": "2024-05-20T12:34:56 UTC",
"id": 123,
"class": "general",
"event": "query",
"connection_id": 45,
"account": {
"user": "root",
"host": "localhost"
},
"login": {
"user": "root",
"os": "",
"ip": "127.0.0.1",
"proxy": ""
},
"query": "SELECT * FROM user_table WHERE id = 1"
}
可以通过grep、awk等工具筛选日志,也可以使用ELK等日志分析工具对审计日志进行统一收集和分析,快速定位异常操作。
常见问题与注意事项
- 插件安装失败时可以查看MySQL的错误日志,通常是因为插件版本和MySQL版本不匹配导致
- 审计日志会占用一定的磁盘空间,需要定期清理或者配置日志轮转策略
- 审计功能会对数据库性能有轻微影响,高并发场景下建议根据实际需求调整审计策略,避免记录不必要的操作
- 不要随意修改插件文件权限,避免插件加载失败
卸载插件方法
如果不再需要使用审计功能,可以执行以下命令卸载插件:
UNINSTALL PLUGIN audit_log;
卸载后需要删除my.cnf中相关的配置项,避免MySQL启动时报错。
MySQL_5.7数据库审计McAfee_Audit插件配置修改时间:2026-07-16 00:03:30