假设这么一个情况,你是某公司mysqldba,某日突然公司数据库中的数据被人为删了。
尽管有数据备份,但是因服务停止而造成的损失上千万,现在公司需要查出那个做删除操作的人。
但是拥有数据库操作权限的人很多,如何排查,证据又在哪?
是不是觉得无能为力?
mysql本身并没有操作审计的功能,那是不是意味着遇到这种情况只能自认倒霉呢?
mysql审计插件弥补了社区版审计插件的空白
mysql审计插件,根据业务需求精心编写的,审计粒度很细,具体用户的具体表的具体操作,操作影响的行数都可以审计,确保数据库安全透明的运行,运维DBA再也不用背锅了。
该插件可以测试使用,不影响数据库性能,
线上数据库请测试环境测试完之后使用,有疑问可以咨询
QQ:67349248
mysql5.6.X.tar.gz到mysql-5.7.8-rc.tar.gz是一个版本----audit5_6_21.so
mysql5.7.1.tar.gz---mysql5.7.9.tar.gz是一个版本----audit5_7_9.so
mysql5.7.10--mysql5.7.22是一个版本
下载地址如下
http://pan.baidu.com/s/1dFGFCrv
一、查找插件所在位置
mysql> show variables like '%plugin_dir%';
+---------------+------------------------------+
| Variable_name | Value |
+---------------+------------------------------+
| plugin_dir | /usr/local/mysql/lib/plugin/ |
+---------------+------------------------------+
1 row in set (0.00 sec)
二、将audit_版本号.so插件下载后放到plugin_dir位置
mv audit_版本号.so audit.so
三、加载插件
install plugin audit SONAME 'audit.so';
四、卸载插件
uninstall plugin audit;
使用插件
mysql> show variables like '%audit%';
+----------------+----------------------+
| Variable_name | Value |
+----------------+----------------------+
| audit_logfile | /tmp/mysql_audit.log |
| audit_myswitch | OFF |
| audit_num | 0 |
| audit_sql | all_sql |
| audit_user | all_user |
+----------------+----------------------+
5 rows in set (0.01 sec)
mysql>
mysql> set global audit_logfile='/tmp/mysql_audit_1.log';----只读变量,审计仅指定在/tmp/mysql_audit.log文件,保障权限可以写
ERROR 1238 (HY000): Variable 'audit_logfile' is a read only variable
set global audit_sql='delete;select;drop'; -----这些审计关键字用;分开
set global audit_user='user2;user3'; ----审计用户用;隔开
set global audit_num =0; ----审计sql影响的最少行数,默认为0
set global audit_myswitch=on|off|ON|OFF|1|0; -----开启关闭审计
查看日志linux下tailf /tmp/mysql_audit.log