本文转载自徐老师,正文如下:
MySQL的企业版中提供了审计日志功能。通过审计日志可以记录用户的登录、连接、执行的查询等行为,输出XML格式或者JSON格式的日志文件。
审计日志功能使用“audit_log”服务器插件和其他的组件实现,提供基于规则的过滤功能,并且能够将规则分别适用于不同的用户。日志的内容包括如下:
-
系统发生的错误
-
客户端的连接与断开
-
连接时执行的查询与操作
-
用户访问了哪些数据库和表
安装
安装审计日志时,需要使用MySQL共享路径"share"下的安装脚本“audit_log_filter_win_install.sql”或“audit_log_filter_linux_install.sql”。脚本将安装服务器插件“audit_log”,该插件用于审计事件,并决定是否将事件记入日志。用户自定义函数用于定义过滤规则、控制日志的行为、加密密码、日志文件的读取。mysql库中的系统表“audit_log_filter”用于保存过滤规则,“audit_log_user”用于保存用户的数据,如果这两个表不存在,审计插件将使用传统的基于策略的方式记录日志。用户可以通过系统变量对审计日志进行配置,还可以利用状态变量查看操作信息。用户需要注意,审计日志一旦安装,将一直驻留在服务器上,如果希望卸载,需要执行一系列的语句,详细请访问官网手册。
配置审计日志
用户可以在服务器启动时,通过“audit_log”选项启用或禁用审计日志插件,并可以设置“FORCE_PLUS_PERMANENT”防止插件在服务器运行时被删除。日志名称默认为“audit.log”,保存在服务器的数据路径下,用户可以通过“audit_log_file”系统变量在服务器启动时,对其名称和路径进行更改。“audit_log_rotate_on_size”选项用于配置日志轮换,如果该选项值大于0,日志文件达到所设定的值大小时,将进行轮换。开启审计日志会对服务器的性能产生一定的影响,用户可以通过配置“audit_log_strategy”选项值,调整其对性能的影响,以达到合规和性能的平衡。
开启过滤
开启过滤时,首先,需要定义一个过滤器“audit_log_filter_set_filter(名称,定义)”,定义需要使用JSON格式,过滤器将保存在mysql.audit_log_filter表中。其次,将过滤器赋予一个用户,使用“audit_log_filter_set_user(用户名,过滤器名)”。注意,用户名使用“user_name@host_name”格式或者使用“%”用于其他任何没有赋予过滤器的用户,该信息将保存在“mysql.audit_log_user”表中。
日志格式
日志包含新旧两种XML格式和JSON格式
XML格式
2019-10-03T14:06:33 UTC
1_2019-10-03T14:06:33
Audit
1
1
/usr/local/mysql/bin/mysqld
--socket=/usr/local/mysql/mysql.sock
--port=3306
i686-Linux
5.7.21-log
2019-10-03T14:09:38 UTC
2_2019-10-03T14:06:33
Connect
5
0
0
root
localhost
127.0.0.1
connect
SSL/TLS
_pid
42794
...
program_name
mysqladmin
root
test
...
2019-10-03T14:09:38 UTC
6_2019-10-03T14:06:33
Query
5
0
0
root[root] @ localhost [127.0.0.1]
localhost
127.0.0.1
drop_table
DROP TABLE IF EXISTS t
2019-10-03T14:09:45 UTC
12_2019-10-03T14:06:33
NoAudit
1
JSON格式
[
{
"timestamp": "2019-10-03 13:50:01",
"id": 0,
"class": "audit",
"event": "startup",
...
},
{
"timestamp": "2019-10-03 15:02:32",
"id": 0,
"class": "connection",
"event": "connect",
...
},
...
{
"timestamp": "2019-10-03 17:37:26",
"id": 0,
"class": "table_access",
"event": "insert",
...
}
...
]
日志中记录的值
审计日志中的时间戳“TIMESTAMP”使用UTC。
“NAME”表示事件的类型,包括:
-
“Connect”:登录事件
-
“Quit”:客户端连接断开
-
“Query”:执行的SQL语句
-
“Audit”/“NoAudit”审计的起始点
“STATUS”提供执行命令的状态,代码值与“SHOW ERRORS”相同。
以上内容是关于MySQL审计日志功能的简介。
文章至此。