插件方式
安装
社区版不提供审计功能,可以使用https://github.com/mcafee/mysql-audit, 这个审计插件
使用方式:
先下载插件:https://bintray.com/mcafee/mysql-audit-plugin/release
- 查看插件安装的目录
show global variables like 'plugin_dir';
- 解压安装包,将安装包
/lib/libaudit_plugin.so
文件复制到插件安装目录/usr/lib64/mysql/plugin/
- 增加可执行权限:
chmoa a+x libaudit_plugin.so
- 在
/etc/my.cnf
中增加plugin-load=AUDIT=libaudit_plugin.so
- 关闭
SELinux
(重要)
需要关闭SELinux,否则将安装将出现error 1123 (hy000): can't initialize function 'audit'; plugin initialization function failed.
,/usr/sbin/sestatus -v
查看SELinux状态,enabled:表示开启
关闭SELinuxSELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 31
- 临时关闭(无需重启,但重启后失效)
setenforce 0 # 设置SELinux 成为permissive模式
setenforce 1 # 设置SELinux 成为enforcing模式 - 永久关闭(需重启)
修改/etc/selinux/config
文件
将SELINUX=enforcing
改为SELINUX=disabled
- 临时关闭(无需重启,但重启后失效)
- 在mysql控制台下执行
INSTALL PLUGIN AUDIT SONAME 'libaudit_plugin.so';
如果还是出现错误:error 1123 (hy000): can't initialize function 'audit'; plugin initialization function failed.
解决办法:
解决办法:用offest-extract.sh解决,方法如下:
下载offset-extract.sh脚本: https://raw.github.com/mcafee/mysql-audit/master/offset-extract/offset-extract.sh
加上可执行权限:chmod a+x offset-extract.sh
执行:offset-extract.sh /usr/sbin/mysqld
, 执行成功后会出现如下信息:{"5.7.24","ae633eb887552a3bbb5db3a1eea73d48", 76992, 7040, 4000, 4520, 72, 2704, 96, 0, 32, 104, 136, 7128, 4392, 2800, 2808, 2812, 536, 0, 0, 6360, 6384, 6368, 13048, 548, 516},
然后在配置文件/etc/my.cnf
中添加:audit_offsets=6992, 7040, 4000, 4520, 72, 2704, 96, 0, 32, 104, 136, 7128, 4392, 2800, 2808, 2812, 536, 0, 0, 6360, 6384, 6368, 13048, 548, 516
重启mysql服务 - 验证插件是否安装成功
show plugins;
使用
查看版本:show global status like 'AUDIT_version';
查看可配置的参数:SHOW GLOBAL VARIABLES LIKE '%audi%';
查看审计功能是否开启:Show variables like "audit_json_file";
开启审计功能:SET GLOBAL audit_json_file=ON;
查看数据存放目录:show global variables like 'datadir';
查看审计日志:tail -f /var/lib/mysql/mysql-audit.json
查看用户白名单(即不审计的用户):show global variables like 'audit_whitelist_users';
查看需要审计的命令种类(默认所有命令):show global variables like 'audit_record_cmds';
推荐配置
为了保证重启数据库,配置不丢失,修改my.cnf 配置文件,将下面的配置添加到[mysqld]中,所以在配置文件中my.cnf加入参数:audit_json_file=on
:保证mysql重启后自动启动插件plugin-load=AUDIT=libaudit_plugin.so
:防止删除了插件,重启后又会加载audit_record_cmds='insert,delete,update,create,drop,alter,grant,truncate'
:要记录哪些命令语句,默认记录所有操作;
例如:
plugin-load=AUDIT=libaudit_plugin.so
audit_offsets=7824, 7872, 3632, 4792, 456, 360, 0, 32, 64, 160, 536, 7988, 4360, 3648, 3656, 3660, 6072, 2072, 8, 7056, 7096, 7080, 13464, 148, 672
audit_json_file=on
audit_record_cmds='insert,delete,update,create,drop,alter,grant,truncate'