答案:MySQL审计配置依赖企业版audit_log插件,需检查插件状态并启用,通过配置日志格式、策略及账号列表实现操作记录,日志默认存于audit.log,建议定期轮转并控制访问权限以保障安全。

MySQL 审计策略的配置主要依赖于企业版的 MySQL Enterprise Audit 插件,社区版默认不包含该功能。通过启用和配置审计插件,可以记录用户连接、SQL 执行等操作,满足安全合规要求。
1. 确认是否支持审计插件
MySQL 企业版自带 audit_log 插件,社区版不包含。可通过以下命令检查:
SHOW PLUGINS; -- 或 SELECT * FROM information_schema.PLUGINS WHERE PLUGIN_NAME LIKE '%audit%';
如果返回结果中包含 audit_log 且状态为 ACTIVE,说明已启用。
2. 启用 MySQL 审计插件
若插件未启用,需在配置文件中加载:
[mysqld] plugin-load=audit_log.so audit-log=FORCE_PLUS_PERMANENT
说明:
- plugin-load:指定加载 audit_log 插件。
- audit-log=FORCE_PLUS_PERMANENT:确保插件必须加载成功,否则 mysqld 启动失败。
修改后重启 MySQL 服务:
systemctl restart mysql3. 配置审计日志输出方式
MySQL 支持多种审计日志格式,常用的是 JSON 和通用日志格式。配置示例如下:
[mysqld] audit_log_format=JSON audit_log_policy=ALL audit_log_include_accounts='admin@localhost,monitor@%'
关键参数说明:
- audit_log_format:设置日志格式,可选值有 NORMAL、JSON、NEW。
-
audit_log_policy:控制审计范围,可选:
- ALL:记录所有事件
- LOGINS:仅记录登录登出
- QUERIES:仅记录语句执行
- NONE:关闭审计(除管理指令外)
- audit_log_include_accounts:指定需要审计的账号列表。
- audit_log_exclude_accounts:排除某些账号不审计。
4. 查看和管理审计日志
默认情况下,审计日志写入数据目录下的 audit.log 文件:
/var/lib/mysql/audit.log可通过以下方式查看:
tail -f /var/lib/mysql/audit.log若使用 JSON 格式,每条记录为一行 JSON,包含时间、用户、主机、操作类型、SQL 语句等字段。
5. 注意事项与建议
- 审计日志会占用磁盘空间,建议定期归档或轮转。
- 高并发环境下开启 ALL 策略可能影响性能,按需选择策略。
- 确保日志文件权限安全,仅数据库管理员可读。
- 社区版用户可考虑使用 MariaDB 的审计插件或外部监控工具替代。
基本上就这些。只要插件可用,配置过程并不复杂,但容易忽略权限和日志管理细节。










