赞
踩
mysql版本:5.7.27
系统:centos7
CPU:1核
内存:1G
mysql> show global variables like 'plugin_dir';
+---------------+------------------------------+
| Variable_name | Value |
+---------------+------------------------------+
| plugin_dir | /usr/local/mysql/lib/plugin/ |
+---------------+------------------------------+
(版本并不通用,自行根据版本号提取,这里就没总结了)
wget https://downloads.mariadb.com/MariaDB/mariadb-10.5.16/bintar-linux-x86_64/mariadb-10.5.16-linux-x86_64.tar.gz
tar -zxvf mariadb-10.5.3-linux-x86_64.tar.gz
cp ./mariadb-10.5.3-linux-x86_64/lib/plugin/server_audit.so /usr/local/mysql/lib/plugin/
chmod +x /usr/local/mysql/lib/plugin/server_audit.so
mysql> install plugin server_audit soname 'server_audit.so';
Query OK, 0 rows affected (0.02 sec)
##也可以在my.cnf 加载插件方式安装
在my.cnf 设置 plugin_load = server_audit=server_audit.so
查看当前MySQL插件情况
mysql> show plugins;
| SERVER_AUDIT | ACTIVE | AUDIT | server_audit.so | GPL |
mkdir /opt/mysqldata/auditlogs
chown -R mysql:mysql /opt/mysqldata/auditlogs
#防止server_audit 插件被卸载 进行配置文件配置
server_audit=FORCE_PLUS_PERMANENT
#指定哪些操作被记录到日志文件中
server_audit_events='CONNECT,QUERY,TABLE,QUERY_DDL'
#开启审计功能
server_audit_logging=on
#默认存放路径,可以不写,默认到data文件下
server_audit_file_path=/opt/mysqldata/auditlogs
#设置文件大小 默认1000000,1073741824=1GB
server_audit_file_rotate_size=1073741824
#指定日志文件的数量,如果为0日志将从不轮转
server_audit_file_rotations=0
重启mysql生效!
/etc/init.d/mysql restart
Shutting down MySQL............... SUCCESS!
Starting MySQL.. SUCCESS!
如不便重启mysql,
临时开启 mysql>set global server_audit_logging=on;
临时关闭 mysql>set global server_audit_logging=off;
set global server_audit_file_rotate_size=1073741824;
set global server_audit_file_rotations=0;
set global server_audit_file_path='/opt/mysqldata/auditlogs/server_audit.log';
set global server_audit_events='CONNECT,QUERY,TABLE,QUERY_DDL';
查看server_audit插件参数
mysql> show variables like '%audit%'; +-------------------------------+-------------------------------------------+ | Variable_name | Value | +-------------------------------+-------------------------------------------+ | server_audit_events | CONNECT,QUERY,TABLE,QUERY_DDL | | server_audit_excl_users | | | server_audit_file_path | /opt/mysqldata/auditlogs/server_audit.log | | server_audit_file_rotate_now | OFF | | server_audit_file_rotate_size | 1073741824 | | server_audit_file_rotations | 0 | | server_audit_incl_users | | | server_audit_loc_info | | | server_audit_logging | ON | | 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 | +-------------------------------+-------------------------------------------+
测试查看日志
tail /opt/mysqldata/server_audit.log
20230726 15:25:27,localhost.localdomain,slave,192.168.2.22,3,15,QUERY,,'SELECT @master_binlog_checksum',0
20230726 15:25:27,localhost.localdomain,slave,192.168.2.23,2,16,QUERY,,'SELECT @@GLOBAL.SERVER_UUID',0
20230726 15:25:27,localhost.localdomain,slave,192.168.2.23,2,17,QUERY,,'SET @slave_uuid= \'9c54b402-26ed-11ee-a1ac-000c2981a3ba\'',0
20230726 15:25:27,localhost.localdomain,slave,192.168.2.22,3,18,QUERY,,'SELECT @@GLOBAL.GTID_MODE',0
20230726 15:25:27,localhost.localdomain,slave,192.168.2.22,3,19,QUERY,,'SELECT @@GLOBAL.SERVER_UUID',0
20230726 15:25:27,localhost.localdomain,slave,192.168.2.22,3,20,QUERY,,'SET @slave_uuid= \'9d8e7365-26ec-11ee-ada1-000c291d69c1\'',0
20230726 15:33:04,localhost.localdomain,root,localhost,4,0,CONNECT,,,0
20230726 15:33:04,localhost.localdomain,root,localhost,4,23,QUERY,,'select @@version_comment limit 1',0
20230726 15:33:06,localhost.localdomain,root,localhost,4,24,QUERY,,'show variables like \'%audit%\'',0
20230726 15:45:22,localhost.localdomain,root,localhost,4,25,QUERY,,'show global variables like \'datadir\'',0
server_audit_events :指定记录事件的类型,可以用逗号分隔的多个值
server_audit_excl_users : 该列表的用户[行为]将不记录,connect信息将不受该设置影响
server_audit_file_path :使用该变量设置存储日志的文件,可以指定目录,默认存放在数据目录的server_audit.log文件中
server_audit_file_rotate_now :知否立即切割日志
server_audit_file_rotate_size :限制日志文件的大小
server_audit_file_rotations :指定日志文件的数量,如果为0日志将从不轮转
server_audit_incl_users : 指定哪些用户的活动将记录,connect将不受此变量影响,该变量比server_audit_excl_users优先级高
server_audit_loc_info :
server_audit_logging :启动或关闭审计ON/OFF
server_audit_mode :标识版本,用于开发测试
server_audit_output_type :指定日志输出类型,可为SYSLOG或FILE,当为syslog时记录到/var/log/messages
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_events
省略值全部事件类型都会记录到审计日志中,可选择事件类型才记录。
如 server_audit_events = query,table,query_ddl,query_dml
事件类型
CONNECT:连接、断开连接和失败的连接,包括错误代码
QUERY:以纯文本形式执行的查询及其结果,包括由于语法或权限错误而失败的查询
TABLE:受查询执行影响的表
QUERY_DDL:与QUERY相同,但只筛选DDL类型的查询(create、alter、drop、rename和truncate语句,create/drop[procedure/function/user]和rename user除外(它们不是DDL)
QUERY_DML:与QUERY相同,但只筛选DML类型的查询(do、call、load data/xml、delete、insert、select、update、handler和replace语句)
QUERY_DCL:与QUERY相同,但只筛选DCL类型的查询(create user、drop user、rename user、grant、revoke和set password语句)
QUERY_DML_NO_SELECT:与QUERY_DML相同,但不记录SELECT查询。(从1.4.4版开始)(do、call、load data/xml、delete、insert、update、handler和replace语句)
注意:
如果开启了查询缓存(query cache),查询直接从查询缓存返回数据,将没有table记录
由于除了DDL和DML之外还有其他类型的查询,因此将查询DDL和查询DML选项一起使用并不等同于使用查询。
从Audit插件的1.3.0版开始,有用于记录查询的DCL类型(例如GRANT和REVOKE语句)的QUERY_DCL选项。
在同一版本中,添加了server_audit_query_log_limit变量,以便能够设置日志记录的长度。
以前,由于查询字符串较长,日志条目将被截断。
如my.cnf 有相关配置,先清空重启再卸载。
mysql> UNINSTALL PLUGIN server_audit;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。