news 2026/5/11 18:21:25

MySQL 审计级别配置指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 审计级别配置指南

目录标题

  • MySQL 审计级别配置指南
    • 一、当前环境审计配置
      • 1.1 已安装的审计插件
      • 1.2 当前审计参数
    • 二、Percona Audit Plugin 审计级别详解
      • Policy 对照表
    • 三、各级别详细说明
      • Level 0: NONE(关闭审计)
      • Level 1: LOGINS(基础审计)
      • Level 2: QUERIES(增强审计)
      • Level 3: ALL(全量审计)
    • 四、审计日志字段说明
      • JSON 格式字段
    • 五、高级配置技巧
      • 5.1 排除特定账户审计
      • 5.2 只审计特定数据库
      • 5.3 只审计特定 SQL 类型
      • 5.4 日志轮转配置
    • 六、生产环境建议
      • 6.1 通用生产库(99% 场景)
      • 6.2 核心业务 / 金融 / 电力
      • 6.3 不推荐配置
    • 七、审计 vs 其他日志
    • 八、常见问题
      • Q1: 为什么 LOGINS 级别还记录 Query?
      • Q2: 如何临时关闭审计?
      • Q3: 审计文件满了怎么办?
      • Q4: 审计影响有多大?
    • 九、配置模板
      • 等保合规配置(my.cnf)

MySQL 审计级别配置指南

基于 145 环境 mysql-0d130fde 实例验证

实例信息:

  • 集群:x.x.x.145
  • 命名空间:qfusion-admin
  • 插件:Percona Audit Plugin (audit_log.so)
  • MySQL 版本:8.0.35

一、当前环境审计配置

1.1 已安装的审计插件

audit_log ACTIVE AUDIT audit_log.so GPL

1.2 当前审计参数

参数说明
audit_log_policyALL当前审计级别(全量)
audit_log_formatJSON日志格式
audit_log_file/var/log/mysql/audit.log日志文件路径
audit_log_rotate_on_size536870912 (512MB)日志轮转大小
audit_log_rotations10保留日志文件数量
audit_log_strategyASYNCHRONOUS异步写入策略
audit_log_buffer_size1048576 (1MB)缓冲区大小
audit_log_max_sqltext2048SQL最大记录长度
audit_log_exclude_accountsroot@%,root@localhost,repl@%,@排除审计账户
audit_log_display_query_timeON显示查询耗时

二、Percona Audit Plugin 审计级别详解

Percona Audit Plugin 支持4 种审计策略(policy)

Policy 对照表

Policy等级审计内容
NONELevel 0关闭审计
LOGINSLevel 1连接事件 + 默认查询记录
QUERIESLevel 2所有 SQL 查询(不含连接)
ALLLevel 3��接 + 查询(完整审计)

注意:Percona 的 LOGINS 级别仍会记录 Query,这是与 MariaDB Audit Plugin 的区别。


三、各级别详细说明

Level 0: NONE(关闭审计)

设置方式

SETGLOBALaudit_log_policy=NONE;

特点

  • 不记录任何审计信息
  • 性能影响:0%
  • 适用场景:压测、开发环境

验证结果

# 执行查询SELECT1;# 审计日志:无新增记录

Level 1: LOGINS(基础审计)

设置方式

SETGLOBALaudit_log_policy=LOGINS;

记录内容

  • Connect 事件(用户登录)
  • Quit 事件(用户登出)
  • Query 事件(Percona 特性:LOGINS 级别仍记录 SQL)

适用场景

  • 生产环境常态
  • 等保合规(基础级)

审计日志示例

{"name":"Connect","record":"464","timestamp":"2025-12-24T09:48:53Z","user":"audit_test","host":"localhost"}{"name":"Query","record":"466","timestamp":"2025-12-24T09:48:53Z","command_class":"select","sqltext":"SELECT 1"}{"name":"Quit","record":"468","timestamp":"2025-12-24T09:48:53Z","user":"audit_test"}

性能影响

  • 很低(< 3%)

Level 2: QUERIES(增强审计)

设置方式

SETGLOBALaudit_log_policy=QUERIES;

记录内容

  • 所有 SQL 查询(SELECT / INSERT / UPDATE / DELETE / DDL)
  • 不记录 Connect/Quit 事件

适用场景

  • 核心业务库
  • 需要 SQL 级别追溯
  • 金融/电力/政企系统

审计日志示例

{"name":"Query","record":"471","timestamp":"2025-12-24T09:49:03Z","command_class":"select","sqltext":"SELECT 1"}{"name":"Query","record":"472","timestamp":"2025-12-24T09:49:03Z","command_class":"delete","sqltext":"DELETE FROM test_audit.t WHERE id=1"}

性能影响

  • 中等(5% ~ 10%)
  • 与 SQL 频率正相关

Level 3: ALL(全量审计)

设置方式

SETGLOBALaudit_log_policy=ALL;

记录内容

  • Connect 事件
  • Quit 事件
  • 所有 SQL 查询
  • 完整上下文(用户、IP、时间、耗时)

适用场景

  • 安全事件追溯
  • 应急排查(短期开启)
  • 高合规要求环境

审计日志示例

{"name":"Connect","record":"474","timestamp":"2025-12-24T09:49:16Z","user":"audit_test","host":"localhost"}{"name":"Query","record":"475","timestamp":"2025-12-24T09:49:16Z","command_class":"select","sqltext":"select @@version_comment limit 1"}{"name":"Query","record":"476","timestamp":"2025-12-24T09:49:16Z","command_class":"select","sqltext":"SELECT * FROM test_audit.t"}{"name":"Quit","record":"477","timestamp":"2025-12-24T09:49:16Z","user":"audit_test"}

性能影响

  • 较高(10% ~ 20%+)
  • 日志量快速增长
  • 长期开启需谨慎

四、审计日志字段说明

JSON 格式字段

字段说明
name事件类型(Connect/Query/Quit/Table/Audit)
timestampUTC 时间戳
connection_id连接 ID
user执行用户
host连接来源主机
ip客户端 IP
db数据库名
command_classSQL 类型(select/insert/update/delete/drop等)
sqltext完整 SQL 文本
status执行状态码(0=成功)
start_time查询开始时间(微秒)
end_time查询结束时间(微秒)

五、高级配置技巧

5.1 排除特定账户审计

当前环境已配置排除 root 用户:

-- 查看排除列表SHOWVARIABLESLIKE'audit_log_exclude_accounts';-- 设置排除账户SETGLOBALaudit_log_exclude_accounts='root@%,root@localhost,repl@%,@';

5.2 只审计特定数据库

-- 只审计特定库SETGLOBALaudit_log_include_databases='business_db,core_db';

5.3 只审计特定 SQL 类型

-- 只审计 DMLSETGLOBALaudit_log_include_commands='insert,update,delete';

5.4 日志轮转配置

-- 单文件最大 512MBSETGLOBALaudit_log_rotate_on_size=536870912;-- 保留 10 个历史文件SETGLOBALaudit_log_rotations=10;

六、生产环境建议

6.1 通用生产库(99% 场景)

推荐配置LOGINS+ 慢日志

SETGLOBALaudit_log_policy=LOGINS;SETGLOBALlong_query_time=1;

优势

  • 审计连接 + DDL
  • 性能稳定
  • 易长期运行

6.2 核心业务 / 金融 / 电力

推荐配置QUERIES+ 定期清理

SETGLOBALaudit_log_policy=QUERIES;

配合措施

  • 定期归档审计日志
  • 集中化日志收集(ELK)
  • 设置日志轮转

6.3 不推荐配置

-- 长期开启 ALL,配合 audit_log_strategy=ASYNCHRONOUSSETGLOBALaudit_log_policy=ALL;SETGLOBALaudit_log_strategy=ASYNCHRONOUS;

风险

  • 高并发下可能引发 I/O 抖动
  • 日志文件占用大量磁盘
  • 影响主备同步延迟

七、审计 vs 其他日志

日志类型安全合规数据恢复性能分析SELECT记录
审计日志可选
binlog
慢日志仅慢SQL

八、常见问题

Q1: 为什么 LOGINS 级别还记录 Query?

A: Percona Audit Plugin 的 LOGINS 级别行为与 MariaDB 不同,会同时记录连接和查询。如需只记录连接,需使用audit_log_exclude_commands过滤。

Q2: 如何临时关闭审计?

SETGLOBALaudit_log_policy=NONE;

Q3: 审计文件满了怎么办?

审计插件会自动轮转,但建议配置监控:

# 检查审计日志大小ls-lh /var/log/mysql/audit.log*# 设置定期清理任务find/var/log/mysql/audit.log* -mtime +30 -delete

Q4: 审计影响有多大?

实测数据(参考):

  • NONE: 0% 影响
  • LOGINS: ❤️% 影响
  • QUERIES: 5-10% 影响
  • ALL: 10-20%+ 影响(与 QPS 正相关)

九、配置模板

等保合规配置(my.cnf)

[mysqld] # 加载审计插件(通常已预装) plugin-load=audit_log.so # 审计策略 audit_log_policy=LOGINS audit_log_format=JSON audit_log_file=/var/log/mysql/audit.log # 轮转配置 audit_log_rotate_on_size=536870912 audit_log_rotations=9 # 排除管理账户(避免日志膨胀) audit_log_exclude_accounts=root@%,root@localhost,repl@%,@ # 性能优化 audit_log_strategy=ASYNCHRONOUS audit_log_buffer_size=1048576 # SQL 记录配置 audit_log_max_sqltext=2048 audit_log_display_query_time=ON

文档版本:v1.0
验证日期:2025-12-24
验证环境:145 集群 mysql-0d130fde (MySQL 8.0.35 + Percona Audit Plugin)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 16:03:50

测试团队的技术规划与技术债管理

质量防线的双重挑战 在敏捷与DevOps主流化的今天&#xff0c;软件测试团队的角色已从传统的“质量守门员”演变为“质量赋能者”。这一转变意味着测试工作不再仅仅是发现缺陷&#xff0c;更需要深度融入开发流程&#xff0c;并通过技术手段提升效率与可靠性。然而&#xff0c;…

作者头像 李华
网站建设 2026/5/1 13:02:33

从用户体验(UX)设计中学习测试用例设计灵感

打破专业壁垒&#xff0c;从同理心出发 在追求软件质量的旅程中&#xff0c;测试与设计的角色并非两条平行线。用户体验&#xff08;UX&#xff09;设计的核心是“理解人”&#xff0c;致力于创造高效、愉悦且满足需求的交互过程&#xff1b;而软件测试的使命是“保障质量”&a…

作者头像 李华
网站建设 2026/5/11 18:10:53

降重 + 去 AIGC 双 buff 拉满!虎贲等考 AI:学术合规的智能破局方案

论文查重率 “超标预警”&#xff1f;AI 生成痕迹被精准标记&#xff1f;辛苦创作的稿件因 “机器感过重” 被打回重改&#xff1f;在学术规范日趋严格的当下&#xff0c;“降重” 与 “清除 AIGC 痕迹” 成为学术创作的两大核心痛点。普通工具要么只做表面文字替换&#xff0c…

作者头像 李华
网站建设 2026/5/9 21:52:01

在AI时代,测试工程师的核心价值和能力模型发生了哪些变化?

在AI时代,测试工程师的角色正从“质量验证者”向“风险预测与价值守护者” 深刻演进。AI不仅改变了我们测试的产品,更重塑了测试工作本身。其核心价值与能力模型的变迁,可以用以下框架清晰呈现: 一、 核心价值的升维:从“找Bug”到“防风险、提体验、护伦理” 价值重心转…

作者头像 李华
网站建设 2026/5/4 20:29:27

三大厂太贵了!我真心希望薰风能成为羽毛球第四大厂

最近这段时间,使用了好几把薰风的拍子,不论是狂蟒、修罗亦或是厚羿,都让我觉得十分的好用,再加上球鞋球服的使用,突然发觉薰风已经逐渐包围了我的生活。那么就简单的和大家分享一下目前我对薰风的一些看法,我认为薰风是一个锐意进取不断上升的好品牌,我希望它能够有更高的高度,…

作者头像 李华
网站建设 2026/5/10 10:53:48

优雅的让SpringAI的Tool调用触发自定义的开始与结束事件

Spring AI 1.1.0在 Tool 调用时&#xff0c;很难让开发者监听开始调用Tool和结束调用Tool。这篇文章就是为了解决该问题。 Spring AI 1.1.0工具调用监控&#xff1a;基于方法引用的最优雅强类型 Tool Callback 方案。 1. Spring AI 在 Tool 调用上的一个现实问题 Spring AI …

作者头像 李华