首先安装mariadb Audit Plugin,将audit_plugin.so复制到mysql插件目录,并执行INSTALL PLUGIN命令启用;然后在my.cnf中配置server_audit_logging、events、output_type及日志路径等参数,确保目录权限正确;最后通过分析/var/log/mysql/server_audit.log中的连接、查询和表操作记录,实现安全审计。需注意性能影响与日志保护。

MySQL 提供了企业级审计功能,通过安装和配置审计插件可以记录用户对数据库的所有操作行为。虽然 MySQL 社区版不自带审计插件,但可以通过安装 MySQL Enterprise Audit(仅企业版)或使用开源替代方案如 MariaDB Audit Plugin 来实现类似功能。
启用并配置审计插件
以 MariaDB Audit Plugin(由 McAfee 开发,兼容 MySQL)为例,说明如何在 MySQL 中开启审计功能:
- 下载适用于你平台的 audit_plugin.so(linux 下常见路径为 /usr/lib64/mysql/plugin/audit_plugin.so)
- 将插件复制到 MySQL 插件目录(可通过 SHOW VARIABLES LIKE ‘plugin_dir’; 查看)
- 在 MySQL 客户端执行命令安装插件:
INSTALL PLUGIN server_audit SONAME ‘server_audit.so’;
配置审计参数
安装后,可通过修改 MySQL 配置文件(my.cnf 或 my.ini)设置审计日志的行为:
[mysqld] server_audit_logging=ON server_audit_logs_write=ON server_audit_incl_users=root,app_user server_audit_excl_users= server_audit_events=connect,query,table server_audit_output_type=file server_audit_file_path=/var/log/mysql/server_audit.log server_audit_file_rotate_size=1G server_audit_file_rotations=5
关键参数说明:
- server_audit_logging:是否开启审计日志
- server_audit_events:指定要记录的事件类型,connect(连接)、query(查询)、table(表操作)
- server_audit_output_type:输出方式,file 或 syslog
- server_audit_file_path:日志文件路径,确保目录存在且 MySQL 有写权限
- server_audit_incl_users:只审计指定用户,留空则审计所有用户
查看与分析审计日志
插件会将操作记录写入指定日志文件。例如,一条典型的审计日志条目可能如下:
20250405 10:23:45,localhost,root,127.0.0.1,test,QUERY,test,'SELECT * FROM users',0
字段含义依次为:时间、主机、用户、IP、数据库、操作类型、对象、sql语句、状态码。
你可以使用 shell 脚本、grep、awk 或导入 elk、Splunk 等日志系统进行分析,监控高危操作如 DROP、INSERT、UPDATE 等。
注意事项
启用审计会影响性能,尤其在高并发场景下。建议:
- 仅记录必要的事件类型和用户
- 定期轮转和归档日志文件
- 保护审计日志文件,防止被篡改或删除
- 生产环境上线前先在测试环境验证配置
基本上就这些。只要正确安装插件并合理配置参数,就能有效记录 MySQL 操作行为,满足安全审计需求。不复杂但容易忽略权限和路径问题。