最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何在MySQL中配置审计插件(Audit Log)记录用户操作?
时间:2026-09-03 19:41:51 编辑:袖梨 来源:一聚教程网
不支持。MySQL最新audit_log插件(5.7.17+企业版/8.0.19+社区版)从设计上就不捕获SQL语句体,仅记录连接、断开、查询开始/结束等事件元数据,如用户、主机、数据库名、表名、影响行数等。
audit_log 插件是否支持记录 SELECT/INSERT 等 SQL 文本?
不支持。MySQL 最新 audit_log 插件(5.7.17+ 企业版 / 8.0.19+ 社区版)从设计上就不捕获 SQL 语句体。它只记录事件元数据:连接/断开、查询开始/结束、用户、主机、数据库名、表名(若涉及)、影响行数、返回状态码等。
常见误判:
• 日志里只有 connect 和 disconnect —— 这是正常行为,不是插件失效
• 用 grep "SELECT" 搜不到结果 —— 因为根本没写进去
• 设了 audit_log_policy=ALL 就以为所有语句都落盘 —— 实际只扩大事件类型覆盖(如增加 table_access),不触发 SQL 文本记录
MySQL 版本与插件加载是否匹配?
必须先确认版本和插件存在性,否则后续配置全无效:
• 执行 SELECT VERSION();:低于 5.7.28(社区版)或 8.0.19(社区版)基本不可用
• 执行 SHOW PLUGINS;:找 audit_log 行,Status 必须是 ACTIVE
• 若未出现,检查插件路径:SELECT @@plugin_dir;,确认 audit_log.so(Linux)或 audit_log.dll(Windows)真实存在
• 手动加载:INSTALL PLUGIN audit_log SONAME 'audit_log.so';(注意不是 LOAD PLUGIN)
• MySQL 8.0.19+ 默认禁用所有插件,仅靠配置文件 plugin_load_add 不够,必须显式 INSTALL PLUGIN 并配 audit_log=FORCE_PLUS_PERMANENT
my.cnf 配置中哪些参数必须写对且重启生效?
以下参数必须写入 [mysqld] 段,且修改后必须重启 mysqld,SET GLOBAL 无效:
• plugin_load_add=audit_log.so:无空格、无引号、无注释
• audit_log=FORCE_PLUS_PERMANENT:防插件被动态卸载
• audit_log_format=JSON:只接受 JSON 或 NEWLINE;设成 STATEMENT 或其他非法值会导致启动报错 Plugin 'audit_log' init function returned error
• audit_log_file=/var/log/mysql/audit.log:必须是绝对路径,且 mysql 用户对该目录有写权限(chown mysql:mysql /var/log/mysql)
• audit_log_policy=LOGINS 或 QUERIES:避免用 ALL,否则日志量爆炸;LOGINS 适合登录审计,QUERIES 记所有查询但不含连接事件
audit_log_file 为空或没生成文件怎么办?
插件显示 ACTIVE 但日志文件始终为空,优先排查这三件事:
• 确认 mysqld 进程运行用户(通常是 mysql),再用 sudo -u mysql touch /var/log/mysql/test 测试写权限
• 检查路径是否含软链接循环、中文、空格或括号;audit_log_file 不支持变量替换(如不能写 /var/log/mysql/audit_$(date +%F).log)
• 查 error_log 文件,搜索 audit_log 相关错误——常见如 Can't open shared library 'audit_log.so'(路径或架构不匹配)、Failed to open audit log file(权限不足)
• 注意:Unix socket 登录(如 root@localhost)默认不记录,只有 TCP/IP 连接才进审计日志
相关文章
- 宜人优选指纹停用指南 09-03
- TPLink TLWDR8620 52 无线路由器无线设备接入控制设置 09-03
- 宜人优选关闭指纹做法 09-03
- 我的勇者技能书如何获得 怎么升级最划算 09-03
- 我的勇者如何获得神器 神器三选一选谁 09-03
- 免费又好用的写作软件APP推荐:高效创作必备工具 09-03