自从MySQL5.6出现以来开始对json的支持后,使得在MySQL上增加了一些新特性,为此这一点让MySQL增加了一些新的插件支持,在这里就说一说MySQL的SQL审计插件,SQL审计插件并不是MySQL官方的,它是由macfee公司基于percona开发的,所以,在添加SQL审计的插件功能时需要去下载对应版本的MySQL audit插件(支持MariaDB),至于MySQL的插件安装比较简单,记得以前有说过MySQL的半同步复制功能时,其中的半同步复制也是插件,需要的可以参看:http://jim123.blog.51cto.com/4763600/1903678
在这里就简要的说一下MySQL的SQL审计插件audit的部署安装使用,首先,需要去macfee的官网上下载对应MySQL/MariaDB版本的插件,macfee官网下载地址:https://bintray.com/mcafee/mysql-audit-plugin/release 建议下载最新稳定版,目前macfee公司还没有出Windows上的插件版本,本次使用的是MySQL5.6
[root@localhost src]# unzip audit-plugin-mysql-5.6-1.1.4-725-linux-x86_64.zip [root@localhost src]# cd audit-plugin-mysql-5.6-1.1.4-725 #先进下MySQL中看下插件所在的路径 mysql> show variables like '%plugin_dir%'; +---------------+------------------------------+ | Variable_name | Value | +---------------+------------------------------+ | plugin_dir | /usr/local/mysql/lib/plugin/ | +---------------+------------------------------+ 1 row in set (0.03 sec) [root@localhost audit-plugin-mysql-5.6-1.1.4-725]# cp lib/libaudit_plugin.so /usr/local/mysql/lib/plugin/ [root@localhost audit-plugin-mysql-5.6-1.1.4-725]# cd /usr/local/mysql/lib/plugin [root@localhost plugin]# chown mysql:mysql libaudit_plugin.so && chmod +x libaudit_plugin.so #修改插件的属组和添加权限 [root@localhost plugin]# mysql#再进MySQL中安装插件 mysql> install plugin audit soname 'libaudit_plugin.so'; mysql> show global variables like 'audit%'; mysql> set global audit_json_file = on; [root@localhost audit-plugin-mysql-5.6-1.1.4-725]# cd utils/ [root@localhost utils]# chmod +x offset-extract.sh [root@localhost utils]# ./offset-extract.sh /usr/local/mysql/bin/mysqld#初始化 //offsets for: /usr/local/mysql/bin/mysqld (5.6.35) {"5.6.35","c48fe13e444883af96c7f134cd0c952b", 6992, 7040, 4000, 4520, 72, 2704, 96, 0, 32, 104, 136, 7128, 4392, 2800, 2808, 2812, 536, 0, 0, 6360, 6384, 6368},
如果出现ERROR: gdb not found. Make sure gdb is installed and on the path是没有安装gbd插件,直接使用yum或者是apt安装一下,再重新初始化就可以了,这样audit的插件就安装开启好了,这里还需要格外注意的这样没有关闭audit插件功能直接卸载掉audit插件,会导致MySQL发生错误,比较不安全,所有我们还要再my.cnf中添加
plugin-load=AUDIT=libaudit_plugin.so #这个参数是严禁在线卸载,写好后重启MySQL生效
除此之外在添加以下几行,使MySQL重启后audit插件生效:
audit_json_file=on audit_force_record_logins=on audit_json_file_sync=1 audit_offsets=6992,7040,4000,4520,72,2704,96,0,32,104,136,7128,4392,2800,2808,2812,536,0,0,6360,6384,6368 #刚才offset-extract初始化时的信息
这里有几个参数是需要我们关注的:
audit_json_file #audit功能的开关 audit_json_log_file #audit的记录文件名,一般记录文件都在datadir中 audit_record_cmds #audit记录的命令,缺省是空,即记录所有命令,也可以根据实际情况修改,如记录select和insert的语句:audit_record_cmds=select,insert audit_record_objs #audit记录操作的对象,缺省也是空,记录所有的对象,在这里的对象是指MySQL的库,如audit_record_objs=mysql.*,information_schema.* audit_whitelist_users #白名单,指那些用户的SQL语句不做记录
最后要说的是开启MySQL的SQL审计功能是需要在必要的时候,不然会降低MySQL的性能大致30%左右,当然如果是条件允许的话是没有问题的,SQL审计记录下来的内容会以json的格式记录在audit_json_log_file文件中,平时查阅时可以使用相应的轮替归档管理。