Mysql5.7安装server_audit审计
由于MySQL的社区版不支持审计系统,可通过第三方插件实现,此次采用MariaDB的server_audit插件来记录{时间,节点,用户,源IP,事件类型,库,语句,影响行数},注:从mysql8开始已不支持该插件。1. 查看插件安装目录mysql> show global variables like 'plugin_dir';+---------------+--------------
目录
由于MySQL的社区版不支持审计系统,可通过第三方插件实现,此次采用MariaDB的server_audit插件来记录{时间,节点,用户,源IP,事件类型,库,语句,影响行数},注:从mysql8开始已不支持该插件。(好像mysql-5.7.34后也不支持了)
1. 查看插件安装目录
mysql> show global variables like 'plugin_dir';
+---------------+-------------------------------+
| Variable_name | Value |
+---------------+-------------------------------+
| plugin_dir | /opt/mysql/5.7.18/lib/plugin/ |
2 .提取mariadb审计插件并放置插件目录
(版本并不通用,自行根据版本号提取,这里就没总结了)
wget https://mirrors.tuna.tsinghua.edu.cn/mariadb//mariadb-10.5.3/bintar-linux-x86_64/mariadb-10.5.3-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 /opt/mysql/5.7.18/lib/plugin/
chmod +x /opt/mysql/5.7.18/lib/plugin/server_audit.so
3. mysql安装server_audit.so插件
mysql> install plugin server_audit soname 'server_audit.so';
Query OK, 0 rows affected (0.02 sec) ##也可以在my.cnf 加载插件方式安装
查看当前MySQL插件情况
mysql> show plugins;
4. 开启审计,写入配置文件
vi /etc/my.cnf
### 审计 ###
server_audit_logging = ON #开启日志记录,默认是关闭
server_audit = FORCE_PLUS_PERMANENT #防止插件被卸载
server_audit_file_path = server_audit.log #定义审计日志文件名
server_audit_file_rotate_now = OFF #是否强制切割审计日志
server_audit_file_rotate_size = 1073741824 #定义切割审计日志的文件大小1073741824=1GB
server_audit_file_rotations = 0 #定义审计日志的轮询个数,0为不轮询
重启mysql生效!
如不便重启mysql,
临时开启 mysql> set global server_audit_logging=on;
临时关闭 mysql> set global server_audit_logging=off;
5. 查看server_audit.log审计日志文件
默认存放于mysql的data目录下,
mysql> show global variables like 'datadir';
测试查看日志
tail /opt/mysql/data/server_audit.log
查看server_audit插件参数
mysql> show variables like '%server_audit%';
6. server_audit参数说明
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语句)
注意:
1. 如果开启了查询缓存(query cache),查询直接从查询缓存返回数据,将没有table记录
2. 由于除了DDL和DML之外还有其他类型的查询,因此将查询DDL和查询DML选项一起使用并不等同于使用查询。从Audit插件的1.3.0版开始,有用于记录查询的DCL类型(例如GRANT和REVOKE语句)的QUERY_DCL选项。在同一版本中,添加了server_audit_query_log_limit变量,以便能够设置日志记录的长度。以前,由于查询字符串较长,日志条目将被截断。
7. 卸载审计插件
如my.cnf 有相关配置,先清空重启再卸载。
mysql> UNINSTALL PLUGIN server_audit;
其他说明
在my.cnf 设置 plugin_load = server_audit=server_audit.so #载入审计插件,
这可以代替在mysql> install plugin server_audit soname 'server_audit.so';
8. Windows版
也同一个套路,下载地址
https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-5.5.68/winx64-packages/mariadb-5.5.68-winx64.zip
提取 mariadb-5.5.68-winx64/lib/plugin/中的 server_audit.dll 文件
9.参考文献
MariaDB Audit Plugin - Log Settings - MariaDB Knowledge Base
更多推荐
所有评论(0)