MySQL audit—SQL审计插件

[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;

这样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_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文件中,平时查阅时可以使用相应的轮替归档管理。

相关推荐