一、概述

官网地址
https://github.com/trellix-enterprise/mysql-audit

下载地址
https://github.com/trellix-enterprise/mysql-audit/releases/tag/v1.1.13
mysql有5.6,5.7,8.0多个版本,注意选择对应版本

对应wiki地址
https://github.com/trellix-enterprise/mysql-audit/wiki

二、具体配置

1、审计插件

将libaudit_plugin.so上传到mysql的basedir下面的lib/plugin目录下
注意权限设置成755,注意用户和mysql服务启动用户一致
#导入插件到配置文件
vi my.cnf
plugin-load=AUDIT=libaudit_plugin.so
#或者,能写配置文件尽量写配置文件,使用命令加载不好卸载
INSTALL PLUGIN AUDIT SONAME 'libaudit_plugin.so';

2、常用参数

show variables like '%audit%';
+---------------------------------+--------------------------------------------------+
| Variable_name                   | Value                                            |
+---------------------------------+--------------------------------------------------+
| audit_checksum                  |                                                  |
| audit_delay_cmds                |                                                  |
| audit_delay_ms                  | 0                                                |
| audit_json_file                 | OFF                                              |
| audit_json_file_flush           | OFF                                              |
| audit_json_file_sync            | 0                                                |
| audit_json_log_file             | mysql-audit.json                                 |
| audit_json_socket               | OFF                                              |
| audit_json_socket_name          | /tmp/mysql-audit.json.sock                       |
| audit_offsets                   |                                                  |
| audit_offsets_by_version        | ON                                               |
| audit_record_cmds               |                                                  |
| audit_record_objs               |                                                  |
| audit_uninstall_plugin          | OFF                                              |
| audit_validate_checksum         | ON                                               |
| audit_validate_offsets_extended | ON                                               |
| audit_whitelist_users           |                                                  |
+---------------------------------+--------------------------------------------------+

官网地址参考:
https://github.com/trellix-enterprise/mysql-audit/wiki

2.1、audit_json_log_file

json日志文件名,如果audit_json_file选项启用,将写审计跟踪到该设置的文件,可以设置为绝对路径

2.2、audit_json_file

启用或关闭json 日志文件

2.3、audit_json_file_sync

json文件同步周期,如果大于0,将每多少次写后同步到磁盘

2.4、audit_json_file_flush

将刷新日志文件,关闭和重新打开文件,能手动进行轮转日志

2.5、audit_json_socket_name

如果audit_json_socket选项启用,将写审计日志到该unix套接字

2.6、audit_json_socket

启用或关闭json unix socket

2.7、audit_uninstall_plugin

在命令行或配置文件启用或关闭AUDIT uninstall 插件

2.8、audit_validate_checksum

启用或关闭mysqld二进制校验和确认

2.9、audit_checksum

在命令行或配置文件启用mysqld校验和确认,当设置audit_offsets

2.10、audit_record_cmds

逗号分隔的标记记录哪些命令到审计日志,如insert、update、delete

2.11、audit_record_objs

逗号分隔的哪些对象记录到审计日志,格式为database.table,支持通配符

2.12、audit_whitelist_users

逗号分隔的白名单用户,将不记录到审计日志

2.13、audit_header_msg

启用或关闭记录消息头,1.0.6引入

2.14、audit_password_masking_cmds

逗号分隔的命令,将隐藏密码,如CREATE_USER,GRANT,SET_OPTION,SLAVE_START,CREATE_SERVER,ALTER_SERVER,CHANGE_MASTER,1.0.6引入

2.15、audit_password_masking_regex

使用PCRE正则表达式屏蔽密码,仅仅audit_password_masking_cmds指定的命令,1.0.6引入

2.16、audit_force_record_logins

Force logging: Connect, Quit and Failed Login commands, regardless of the settings in audit_record_cmds 
and audit_record_objs variables. ON|OFF. Default value: OFF. Introduced in version 1.0.8.

3、卸载插件

关闭审计
set GLOBAL audit_json_file=off ;
#卸载插件基本上会失败,所以尽量写到配置文件
UNINSTALL PLUGIN AUDIT;

4、试验

1、配置参数
plugin-load=AUDIT=libaudit_plugin.so
audit_json_file=on
audit_json_log_file=/data/mysql/mysql-audit.json
audit_record_cmds=connect,quit  #只记录连接和退出
audit_force_record_logins=on

2、记录实验
可以开关控制启动停止
第一次启动,从库连接信息记录进主库审计日志
组从复制,从库不会记录SQL回放
mysql-audit.json删除不会重新创建,set global audit_json_file=off/on,会重新生成,依旧可以使用cat /dev/null > mysql-audit.json清理
可以单独设置日志记录的sql类型