MySQL 8.4企业版 安装和配置审计插件
在最新的MySQL 8.4.4企业版上启用审计日志功能
操作系统:Ubuntu 24.04
数据库:8.4.4-commercial for Linux on x86_64 (MySQL Enterprise Server - Commercial)
1.查看安装脚本
下面2个脚本位于mysql安装目录 share 下,一个是window一个是linux可以用。
audit_log_filter_win_install.sql
audit_log_filter_linux_install.sql
root@ubuntu01:/# ls -lh /usr/share/mysql-8.4/| grep audit_log_filter
-rw-r--r-- 1 root root 1.5K Dec 16 19:00 audit_log_filter_linux_install.sql
-rw-r--r-- 1 root root 961 Dec 16 19:00 audit_log_filter_uninstall.sql
2.安装审计插件
通过 MySQL 客户端运行位于安装目录 share 下的脚本(需管理员权限)
执行安装脚本 脚本会创建审计插件所需的系统表和存储过程
-- 安装审计插件mysql -u root -p -D mysql < /usr/share/mysql-8.4/audit_log_filter_linux_install.sql
成功返回下面结果
Result
OK
安装后会在 mysql 库中生成两张表:
audit_log_filter:存储审计日志的过滤规则(JSON 格式定义)
audit_log_user:关联用户与过滤规则,支持按用户设置审计策略
3.验证插件状态
查看插件列表中是否存在 audit_log,确认 audit_log 插件状态为 ACTIVE。
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'audit%';
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'audit%';
+-------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+-------------+---------------+
| audit_log | ACTIVE |
+-------------+---------------+
1 row in set (0.00 sec)mysql>
4.参数配置
在 MySQL配置文件(如 my.cnf 或 my.ini)中添加以下参数后 重启服务
# Audit Log
audit-log=FORCE_PLUS_PERMANENT # 防止插件被意外卸载
audit_log_policy = ALL # 记录策略(可选 ALL、NONE、LOGINS、QUERIES)
audit-log-exclude-accounts=root@% # 排除 不记录日志的账号
audit_log_file = /var/log/mysql/audit.log # 日志文件默认存储在 datadir 目录
audit_log_format = JSON # 必须使用 JSON 格式以支持过滤规则<200c>
audit_log_rotate_on_size=1073741824 # 日志文件轮换阈值(单位:字节) 限制单个文件为 1GB
audit_log_prune_seconds=1209600 # 14 days
audit_log_strategy=ASYNCHRONOUS # 异步写入以降低性能影响
audit_log_encryption = AES # 需要依赖kerying加密组件
其中 audit_log_policy 的取值有:
·ALL - all events will be logged
·LOGINS - only logins will be logged
·QUERIES - only queries will be logged
·NONE - no events will be logged
5.用户级过滤规则(可选)
7.日志管理
tail -n 100 /var/log/mysql/audit.log
日志文件默认不自动轮换,需手动清理或设置 audit_log_rotate_on_size 参数限制大小
# 手动轮换
SELECT audit_log_rotate();
8.停用审计功能
a.永久停用
执行 audit_log_filter_linux_uninstall.sql 可完全卸载审计功能
mysql -u root -p -D mysql < /usr/share/mysql-8.4/audit_log_filter_linux_uninstall.sql
b.临时停用
执行下面的命令
SET GLOBAL audit_log_disable = true;
官网资料 https://dev.mysql.com/doc/refman/8.0/en/audit-log-reference.html#audit-log-option-variable-reference