25.Mysql的审计插件

通过如果mysql要想记录数据中所有的操作,则必须要开启gener_log日志,但是由于该日志开启后会严重影响性能,所以,这里我们可以使用审计插件(audit),不过由于mysql社区版本没有这个插件,该插件被放到了mysql的企业版本中,因此对于对于mysql社区版就不能使用了。

不过天无绝人之路,mysql的兄弟maridb却对于这个插件是开源的,因此,我们可以将mariab aduit plugin安装到mysql中进行使用

安装地址:https://mariadb.com/kb/en/mariadb-audit-plugin-installation/

这里需要说明一点:目前maridb已经不再单独地将该插件拿出来让下载,因此我们要想下载它就必须要下载maridb数据库,然后再将它提取出来安装到mysql中

maridb下载地址:https://downloads.mariadb.org/mariadb/+releases/

下载后将插件:server_audit.so文件放在mysql的安装插件的目录下,如果不知道自己插件目录,可以执行show variables like '%plug%';命令查看安装路径

当移到完成后再进行安装插件:

  安装命令:

  INSTALL PLUGIN server_audit SONAME 'server_audit.so';

这里也可以直接在配置文件中添加,然后重启mysql服务器即可。
  
[mysqld]
  
  plugin-load=server_audit=server_audit.so
  server_audit=FORCE_PLUS_PERMANENT


这里是整个安装流程(其中还有一些报错信息):http://www.hellojava.com/a/91290.html

配置:
root@localhost:(none) 23:01:59>show variables like '%server_audit%';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| server_audit_events           |                       |
| 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_loc_info         |                       |
| server_audit_logging          | OFF                   |
| server_audit_mode             | 1                     |
| 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              |
+-------------------------------+-----------------------+
以上是默认值

参数说明:
server_audit_output_type:指定日志输出类型,可为SYSLOG或FILE
server_audit_logging:启动或关闭审计
server_audit_events:指定记录事件的类型,可以用逗号分隔的多个值(connect,query,table),如果开启了查询缓存(query cache),查询直接从查询缓存返回数据,将没有table记录
server_audit_file_path:如server_audit_output_type为FILE,使用该变量设置存储日志的文件,可以指定目录,默认存放在数据目录的server_audit.log文件中
server_audit_file_rotate_size:限制日志文件的大小
server_audit_file_rotations:指定日志文件的数量,如果为0日志将从不轮转
server_audit_file_rotate_now:强制日志文件轮转
server_audit_incl_users:指定哪些用户的活动将记录,connect将不受此变量影响,该变量比server_audit_excl_users优先级高
server_audit_syslog_facility:默认为LOG_USER,指定facility
server_audit_syslog_ident:设置ident,作为每个syslog记录的一部分
server_audit_syslog_info:指定的info字符串将添加到syslog记录
server_audit_syslog_priority:定义记录日志的syslogd priority
server_audit_excl_users:该列表的用户行为将不记录,connect将不受该设置影响
server_audit_mode:标识版本,用于开发测试

 

示例:在mysql的配置文件添加: 

#audit
server_audit_events='CONNECT,QUERY,TABLE' //
server_audit_logging=on
server_audit_file_path =/opt/logs/mysql/auditlogs/  ##这个可以自己定义
server_audit_file_rotate_size=200000000
server_audit_file_rotations=200

  


  

原文地址:https://www.cnblogs.com/zmc60/p/14772917.html