MySQL社区版没有自带的设计功能或插件。调研发现MariaDB的audit plugin 同样适用于MySQL,支持更细粒度的审计,比如只审计DDL操作,满足我们的需求。因为最近测试环境的某表结构经常性的被变更且数据被清空的情况,所以引入MariaDB的插件对DDL进行审计

MariaDB audit plugin 官网

MariaDB audit plugin 下载地址

查看MySQL的插件路径

mysql> show global variables like '%plugin%';
+---------------+------------------------------+
| Variable_name | Value |
+---------------+------------------------------+
| plugin_dir | /usr/local/mysql/lib/plugin/ |
+---------------+------------------------------+
1 row in set (0.00 sec) mysql> select version();
+------------+
| version() |
+------------+
| 5.6.33-log |
+------------+
1 row in set (0.00 sec)

我选择下载的插件版本文件为 server_audit-1.4.0.tar.gz

解压后将插件文件server_audit.so拷贝到MySQL的插件文件目录下

安装

mysql> INSTALL PLUGIN server_audit SONAME 'server_audit.so';
Query OK, 0 rows affected (0.02 sec)
#在线安装加载插件重启后会失效,可以在配置文件中配置
[mysqld]
...
plugin_load=server_audit=server_audit.so

配置审计项

# 安装完之后相关的配置项有
SHOW GLOBAL VARIABLES LIKE 'server_audit%'; +-------------------------------+-----------------------+
| Variable_name | Value |
+-------------------------------+-----------------------+
| server_audit_events | CONNECT,QUERY,TABLE |
| server_audit_excl_users | |
| server_audit_file_path | server_audit.log |
| server_audit_file_rotate_now | OFF |
| server_audit_file_rotate_size | 1000000 |
| server_audit_file_rotations | 9 |
| server_audit_incl_users | |
| server_audit_logging | ON |
| server_audit_mode | 0 |
| server_audit_output_type | file |
| server_audit_query_log_limit | 1024 |
| server_audit_syslog_facility | LOG_USER |
| server_audit_syslog_ident | mysql-server_auditing |
| server_audit_syslog_info | |
| server_audit_syslog_priority | LOG_INFO |
+-------------------------------+-----------------------+

根据我们的需求设置

mysql> set global server_audit_events='query_ddl,table';
Query OK, 0 rows affected (0.00 sec) mysql> set global server_audit_logging=on;
Query OK, 0 rows affected (0.00 sec)

设置完之后关于ddl的审计日志如

 ::,mysql-5.6.dev.yz,root,localhost,,,QUERY,test,'truncate table t1',

关于server_audit_events可选的参数有connect:会记录所有的连接,包括失败的以及关闭连接的日志,如日志中记录的,但是对我们来说不关心这些

[root@mysql-5.6.dev.yz 3306_develop]# tailf server_audit.log
20180416 11:22:42,mysql-5.6.dev.yz,root,10.211.253.104,34950731,0,CONNECT,test,,0
20180416 11:22:48,mysql-5.6.dev.yz,admin,10.211.253.153,34950655,0,DISCONNECT,test,,0
20180416 11:22:48,mysql-5.6.dev.yz,admin,10.211.253.153,34950732,0,CONNECT,test,,0
20180416 11:22:49,mysql-5.6.dev.yz,admin,10.211.253.101,34950664,0,DISCONNECT,test,,0

最新文章

  1. Hibernate第三次测试错题解析
  2. Ubuntu下Sublime Text 3解决无法输入中文的方法
  3. java 24 - 1 GUI之GUI的概述和基本代码
  4. BufferedReader类
  5. 控制器与xib关联(用xib布局控制器)
  6. CentOS6.x最下化安装及优化配置
  7. MyBatis自动获取主键,MyBatis使用Oracle返回主键,Oracle获取主键
  8. MySQL字符串函数
  9. less.css基础学习,陆续更新中
  10. POJ 2104(K-th Number-区间第k大-主席树)
  11. 《CS:APP》 chapter 8 Exceptional Control Flow 注意事项
  12. C语言头文件
  13. <Mastering KVM Virtualization>:第二章 KVM内部原理
  14. sort 命令详解
  15. phpstorm(或webstorm) 打开后 一直停留在scanning files to index....,或跳出内存不够的提示框
  16. quartz入门详解
  17. 用curl采集需要登录的页面
  18. 移动端,input、textarea滚动至可视区域
  19. 论文笔记(Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration)
  20. GitHub和Git超超超详细使用教程

热门文章

  1. JS中的Global对象
  2. Nginx+proxy实现简单的负载均衡
  3. Oracle 换行符 空格符 回车符
  4. zabbix mysql 迁移 增加分区
  5. 第二章JavaScript 函数和对象
  6. mysql六:数据备份、pymysql模块
  7. 09.1.VUE学习之watch监听属性变化实现类百度搜索栏功能ajax异步请求数据,返回数组
  8. 海量数据处理算法—BitMap
  9. git 使用规范
  10. Java的多态性Polymorphism