前言
使用数据库日志审计功能可以记录数据库所有操作,方便问题回溯、责任厘清。MySQL商业版自带日志审计功能,社区版有很多方案,本例使用MariaDB插件实现。
本例在Windows上实现,Linux原理一致。
下载MariaDB
- 这里使用解压缩版, 下载地址
- MySQL与MariaDB有版本对应关系,一般来讲:
- 本例MySQL版本为5.7+, 使用
mariadb-10.4.26-winx64
(即当前10.4的最近版本)
注意注意注意: mariadb官网中明确说明MySQL5.7对应mariadb10.2,10.3,10.4版本,但实际操作中发现,小版本之间还是有略微差异,如果安装插件的时候报错了,尝试换下小版本。
本例中测试MySQL5.7.29 对应 Mariadb10.4.26时正常
但是测试MySQL5.7.37对应 Mariadb10.4.26时报错, 无法打开对应目录下server_audit.dll,最终使用Mariadb10.3.36正常运行
下载后解压到本地合适位置。
安装server_audit插件
以下所有指令可以登录MySQL中执行
- 进入解压文件执行目录
cd ./mariadb-10.4.26-winx64/bin/
- 通过mariadb登录mysql
mysql -uroot -p
可以使用
show databases;
查看数据库信息, 验证登录
- 查看mysql插件安装位置
show variables like '%plugin%';
此处找到mysql插件安装位置, 其实就在mysql安装目录下
- 拷贝server_audit.dll
将mariadb解压目录汇总的./mariadb-10.4.26-winx64/lib/plugin/server_audit.dll
拷贝到上述MySQL插件安装位置,即:D:\java\mysql\mysql-5.7\lib\plugin\server_audit.dll
- 执行server_audit安装指令
INSTALL PLUGIN server_audit SONAME 'server_audit.dll';
如果报错
can't open share ...
尝试切换版本
- 运行插件
set global server_audit_logging=on
执行有些数据库操作, 发下data目录下出现了一个server_audit.log
的文件, 里面就是数据库执行的日志了。
7. 使用命令执行是一次性的,持久使用可以修改MySQL配置文件
在my.ini中的[mysqld]下添加一下内容
# 加载插件
plugin_load_add = server_audit.dll
# 开启审计功能
server_audit_logging = ON
# 防止插件被卸载
server_audit = FORCE_PLUS_PERMANENT
# 是否强制切割审计日志
server_audit_file_rotate_now = ON
# 定义切割审计日志的文件大小1073741824=1GB(单位K)此处设置为300M
server_audit_file_rotate_size = 314572800
# 定义审计日志路径及文件名
server_audit_file_path = D:\\software\\mysql-5.7.34-winx64\\logs\\server_audit.log
server_audit_file_rotations = 200
- 重启Mysql服务, 观察制定路径下的日志文件
重要说明
- 需要使用哪些文件
重要说明:
实际上只需要server_audit.dll
,所有指令都可以在mysql中执行
- 关于版本
本例MySQL版本为5.7+, 使用
mariadb-10.4.26-winx64
(即当前10.4的最近版本)
但是注意: mariadb官网中明确说明MySQL5.7对应mariadb10.2,10.3,10.4版本,但实际操作中发现,小版本之间还是有略微差异,如果安装插件的时候报错了,尝试换下小版本。
本例中测试MySQL5.7.29 对应 Mariadb10.4.26时正常
但是测试MySQL5.7.37对应 Mariadb10.4.26时报错, 无法打开对应目录下server_audit.dll,最终使用Mariadb10.3.36正常运行
以上本文就是全部内容了。