在数据库运维与安全管控场景中,记录用户操作日志是必不可少的工作。原生MySQL仅支持慢查询日志、二进制日志等特定类型日志,无法完整记录用户的所有操作行为,而通过审计插件可以补全这一能力,实现对所有用户操作的全量审计。

审计插件选型
目前常用的MySQL审计插件主要分为两类,用户可以根据自身MySQL版本与需求选择:
- 官方企业版审计插件:MySQL官方提供的付费插件,兼容性好,功能稳定,适合企业级生产环境使用。
- 开源审计插件:比如MariaDB Audit Plugin,支持MySQL社区版,免费开源,功能可以满足大部分基础审计需求。
开源审计插件安装配置
插件安装
以MariaDB Audit Plugin为例,首先下载对应MySQL版本的插件文件,然后执行以下SQL完成安装:
-- 安装审计插件,插件文件路径根据实际存放位置调整 INSTALL PLUGIN server_audit SONAME 'server_audit.so'; -- 查看插件是否安装成功 SHOW PLUGINS;
审计参数配置
安装完成后需要配置审计参数,控制审计的内容和日志输出方式,常用配置项如下:
| 参数名 | 作用说明 | 推荐配置值 |
|---|---|---|
| server_audit_logging | 是否开启审计功能 | ON |
| server_audit_events | 需要审计的事件类型,多个类型用逗号分隔 | CONNECT,QUERY,TABLE |
| server_audit_file_path | 审计日志文件存放路径 | /var/log/mysql/audit.log |
| server_audit_file_rotate_size | 单个审计日志文件大小上限,单位字节 | 104857600 |
配置参数的SQL语句如下:
-- 开启审计功能 SET GLOBAL server_audit_logging = ON; -- 配置审计事件类型,记录连接、查询、表操作 SET GLOBAL server_audit_events = 'CONNECT,QUERY,TABLE'; -- 设置日志文件路径 SET GLOBAL server_audit_file_path = '/var/log/mysql/audit.log'; -- 设置单个日志文件大小上限为100MB SET GLOBAL server_audit_file_rotate_size = 104857600; -- 将配置写入配置文件,避免重启后失效 -- 在my.cnf中添加以下内容 -- [mysqld] -- server_audit_logging=ON -- server_audit_events=CONNECT,QUERY,TABLE -- server_audit_file_path=/var/log/mysql/audit.log -- server_audit_file_rotate_size=104857600
审计日志解析与存储
审计插件生成的日志默认是文本格式,每行记录一个操作事件,格式示例如下:
20240520 10:30:15,node1,root,127.0.0.1,1234,0,CONNECT,root,127.0.0.1,0 20240520 10:30:20,node1,root,127.0.0.1,1234,0,QUERY,root,127.0.0.1,'SELECT * FROM user'
如果需要更方便的查询和分析,可以将日志存入数据库表中,通过定时任务解析日志文件并插入到审计日志表:
-- 创建审计日志存储表 CREATE TABLE `audit_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `log_time` datetime DEFAULT NULL, `server_name` varchar(50) DEFAULT NULL, `user_name` varchar(50) DEFAULT NULL, `client_ip` varchar(20) DEFAULT NULL, `event_type` varchar(20) DEFAULT NULL, `sql_content` text, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
注意事项
- 审计插件会增加MySQL的额外性能开销,建议根据实际需求调整审计的事件类型,避免记录不必要的操作。
- 审计日志需要定期归档清理,避免占用过多磁盘空间,同时需要做好日志的权限管控,防止日志被篡改。
- 如果使用的是MySQL企业版,可以直接使用官方审计插件,配置方式类似,参数名称略有差异,可以参考官方文档调整。
数据库操作审计是安全合规的重要组成部分,合理运用审计插件可以在不改动业务代码的前提下,完整记录所有用户操作行为,为故障排查和安全溯源提供可靠依据。