一、MySQL审计的作用
审计功能可以对用户的操作进行记录,方便追溯一些问题,最常见的就是追查删库行为了。开启审计功能会降低一定的性能,这个需要自行取舍是要安全还是要性能。MySQL审计功能通常可以使用mysql-audit插件实现,该插件支持MySQL、Percona、Mariadb。除此之外还可以使用ELK或者MySQL自带的init-connect结合binlog进行审计。
二、mysql-audit安装与配置
1、mysql-audit源码存放在Github上(/mcafee/mysql-audit),二进制包则是通过/mcafee/mysql-audit-plugin/release进行下载,下载的时候需要注意版本是否支持当前的MySQL版本
2、将安装包解压,获取libaudit_plugin.so插件文件和offset-extract.sh脚本
3、登陆MySQL查看插件存放路径
mysql > show global variables like '%plugin_dir%'
4、将so文件复制到上一步所查询出来的目录
cp lib/libaudit_plugin.so /usr/local/mysql/lib/mysql/plugin/
5、安装gdb环境,否则在执行offset-extract.sh脚本的时候会出现ERROR: gdb not found. Make sure gdb is installed and on the path的错误
yum install gdb -y
6、安装插件的两个方法(建议同时配置)
· 方法1——INSTALL PLUGIN在线安装,无需重启MySQL服务
mysql > INSTALL PLUGIN audit soname 'libaudit_plugin.so';
mysql > set global audit_json_file='ON';
mysql > set global audit_json_log_file='/data/mysql3311/log/mysql-audit.json';
mysql > set global audit_record_cmds='drop_db,drop_table,alter_table'; #仅审计DDL操作
· 方法2——plugin-load安装,服务重启后依然生效
vi /etc/f
[mysqld]
plugin-load=AUDIT=libaudit_plugin.so
audit_json_file=on #打开审计
audit_json_log_file=/data/mysql/audit.json #审计日志存放路径
# audit_record_cmds="insert,delete,update,create,drop,alter" #需要审计的命令,不写的话所有记录都审计
7、检查插件是否安装成功,能看到版本就代表正常
show global status like 'AUDIT_version';
show variables like '%audit%';