0

0

mysql数据库中审计日志的配置与安全分析

P粉602998670

P粉602998670

发布时间:2026-01-14 21:54:10

|

891人浏览过

|

来源于php中文网

原创

MySQL社区版默认不提供审计日志功能;企业版需手动安装audit_log插件并配置audit_log=FORCE_PLUS_PERMANENT等参数才能启用,且默认未开启。

mysql数据库中审计日志的配置与安全分析

MySQL 审计日志是否默认开启?

不开启。MySQL 社区版(即最常用版本)**默认完全不提供审计日志功能**,AUDIT_LOG 插件仅存在于 MySQL Enterprise Edition(企业版),社区版用户直接执行 INSTALL PLUGIN audit_log SONAME 'audit_log.so' 会报错 Plugin 'audit_log' is not loaded

如果你用的是社区版,必须借助第三方方案,比如:

  • mysql-audit(McAfee 开源插件,需自行编译适配版本,支持 5.7/8.0)
  • 启用通用查询日志(general_log)并配合日志轮转与访问控制——但性能开销大、无结构化事件类型
  • 使用代理层(如 ProxySQL、MaxScale)记录客户端行为

如何验证 audit_log 插件是否已正确加载(企业版)

即使安装了企业版,audit_log 插件也**不会自动启用**,需手动加载并确认状态:

INSTALL PLUGIN audit_log SONAME 'audit_log.so';
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'audit_log';

若返回 PLUGIN_STATUSACTIVE,说明加载成功;否则检查错误日志中是否有类似 Can't open shared library 'audit_log.so' 的提示——常见原因是插件路径不对或 SELinux 阻止了动态库加载。

关键配置项(需写入 my.cnf 并重启):

  • audit_log=FORCE_PLUS_PERMANENT:强制加载且不可卸载(推荐)
  • audit_log_format=NEW:输出 JSON 格式(兼容性好,便于解析)
  • audit_log_policy=ALL:记录所有连接、查询、管理命令(LOGINSQUERIES 可缩小范围)
  • audit_log_file=/var/log/mysql/audit.log:确保 MySQL 进程对该路径有写权限,且磁盘空间充足

audit_log 输出内容里哪些字段最关键?

JSON 格式的每条审计记录包含大量字段,但实际安全分析中应优先关注:

CRMEB Min开源商城
CRMEB Min开源商城

CRMEB Min是CRMEB品牌全新推出的一款轻量级、高性能、前后端分离的开源电商系统,完善的后台权限管理、会员管理、订单管理、产品管理、客服系统、CMS管理、多端管理、页面DIY、数据统计、系统配置、组合数据管理、日志管理、数据库管理,一键开通短信、产品采集、物流查询等接口,系统采用TP6+Mysql+Uniapp+iView+Redis+workerman+form-builder等最流行热

下载
  • "name":"connect""name":"query":区分是登录事件还是 SQL 执行事件
  • "status":0 表示成功,非零值(如 1045)代表认证失败,高频出现可能意味着暴力破解
  • "user":"app@10.10.20.5":含来源 IP,比仅看用户名更能定位异常访问源
  • "query":"DROP TABLE users":敏感操作明文记录(注意:长查询会被截断,受 audit_log_read_buffer_size 影响)
  • "timestamp":"2024-04-12T09:23:41":时区为 UTC,做关联分析时需统一时间基准

不要依赖 "os_login""priv_user" 字段做权限判断——它们在普通连接下常为空,真实权限由 user + host 组合决定。

审计日志的性能与落盘风险怎么平衡?

开启 audit_log 后,每个语句都会触发一次磁盘 I/O 写入,QPS 超过 500 时可能明显拖慢响应。更隐蔽的风险是:audit_log 默认同步写入(audit_log_flush=ON),一旦磁盘满或挂载点不可写,MySQL 可能直接拒绝新连接(ERROR 2013 (HY000))。

缓解方式:

  • audit_log_flush=OFF 改为异步刷盘(但崩溃时最多丢失 1 秒日志)
  • audit_log_strategy=ASYNCHRONOUS(8.0.26+),进一步降低阻塞概率
  • 禁止将审计日志和数据文件放在同一块物理盘上
  • logrotate 配合 audit_log_rotate_on_size 自动切分,避免单文件过大

真正棘手的是:当攻击者拿到 DBA 权限后,可直接执行 SET GLOBAL audit_log_policy = NONE; 关停审计——所以审计日志本身必须由独立账号只读采集,并实时外发到 SIEM 系统。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

676

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

320

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

346

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1095

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

357

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

675

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

571

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

414

2024.04.29

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.8万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 792人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号