参考文档:
https://www.percona.com/doc/percona-server/5.6/management/audit_log_plugin.html#audit-log-plugin
1、前言
如果没有开启general log,你估计找不到是谁执行的SQL吧,这时我们需要MYSQL的审计插件
2、插件安装及配置
mysql> INSTALL PLUGIN audit_log SONAME 'audit_log.so';
Query OK, 0 rows affected (0.02 sec)
条件:percona mysql 5.5.37及5.6.17以上版本
mysql> show plugins;
mysql> show variables like '%audit%';
+----------------------------+---------------+
| Variable_name | Value |
+----------------------------+---------------+
| audit_log_buffer_size | 1048576 | 审计缓存大小,建议设置为4096的倍数,该参数只有在audit_log_strategy为ASYNCHRONOUS时生效。
| audit_log_exclude_accounts | |
| audit_log_exclude_commands | |
| audit_log_file | audit.log | 指定日志文件,可以指定绝对路径,没有指定路径,将存储在数据目录
| audit_log_flush | OFF | 控制审计日志的归档,只有在audit_log_rotate_on_size=0的时候生效,在手工重命名审计日志归档后,可以指定audit_log_flush=1来生成新的审计日志
| audit_log_format | OLD | 指定审计日志格式,OLD记录日志为xml属性,NEW记录日志为XML标签
| audit_log_handler | FILE | 指定审核日志保存格式:FILE、SYSLOG
| audit_log_include_accounts | |
| audit_log_include_commands | |
| audit_log_policy | ALL | 指定审计日志记录的事件 ALL - 记录所有事件 LOGINS - 只记录登录连接信息 QUERIES - 只记录查询事件 NONE - 不记录任何事件
| audit_log_rotate_on_size | 0 | 设置审计日志的大小,当日志到设置值,将自动轮转
| audit_log_rotations | 0 | 指定审计日志文件数量
| audit_log_strategy | ASYNCHRONOUS |
| audit_log_syslog_facility | LOG_USER |
| audit_log_syslog_ident | percona-audit |
| audit_log_syslog_priority | LOG_INFO |
+----------------------------+---------------+
audit_log_strategy
指定审计日志的刷新策略,只有在 audit_log_handler 为 'FILE'时该变量才生效。
ASYNCHRONOUS - 异步(默认),使用内存缓冲区,缓冲区满时不删除消息
PERFORMANCE - 使用内存缓冲区,缓冲区满时删除消息
SEMISYNCHRONOUS - 直接写入到文件中,通过操作系统刷新同步事件
SYNCHRONOUS - 直接写入到文件中,实时同步刷新事件
3、审计限制:
审计日志默认存放在data路径下,由于XML文件没有经过加密,官网建议通过参数指定到特殊路径下,设置相应人员权限,进行安全控制。
此外审计功能有如下情况不能进行记录:
1)只有top-level(无变量定义)的语句才能进行审计,存储程序如存储过程,触发器,函数等不审计;
2)涉及到外部文件的语句无法进行审计,如load data infile。。
4、管理相关:
动态关闭或卸载审计插件:
set global audit_log_policy=NONE;
UNINSTALL PLUGIN audit_log ;
管理日志:(如果写配置文件里面,需要plugin-load = audit_log.so)
[mysqld]
audit_log_policy=ALL
audit_log_format=JSON
audit_log_file=/path/to/audit.log //要有可写权限
audit_log_rotate_on_size=1024M
audit_log_rotations=10
plugin-load = audit_log.so
需要重启服务