企业版审计日志在 MariaDB 10.5 与 MySQL 社区版配置方法有什么区别?

文章导读
MySQL 社区版本身不提供官方审计插件,需安装 MariaDB 审计插件(推荐版本>=1.4.4)实现审计功能,而 MySQL 企业版内置审计日志功能,MariaDB 10.5 则原生支持 server_audit 插件。
📋 目录
  1. 原因分析
  2. 解决方案
  3. 注意事项
  4. 参考来源
A A

企业版审计日志在 MariaDB 10.5 与 MySQL 社区版配置方法有什么区别?

核心结论:MySQL 社区版本身不提供官方审计插件,需安装 MariaDB 审计插件(推荐版本>=1.4.4)实现审计功能,而 MySQL 企业版内置审计日志功能,MariaDB 10.5 则原生支持 server_audit 插件。

原因分析

MySQL 社区版与企业版在审计功能上存在本质差异。根据阿里云开发者社区 2022 年 7 月 12 日的资料,MySQL 社区版官方并没有提供严格意义上的审计日志,虽然提供 binlog 及 general log,但 binlog 主要作用是主从复制,general log 开启后记录所有 SQL 语句,日志量非常庞大且对数据库性能有影响。MySQL 企业版则提供高级安全功能,包括审计日志和安全审计,根据 2024 年 10 月 15 日的对比资料,企业版引入线程池技术,在模拟高并发场景下可使系统吞吐量提高约 30% 至 50%。

MariaDB 作为 MySQL 的开源分支,从 2012 年 11 月 12 日发布的 10.0.0 版开始不再依照 MySQL 的版号,其审计插件 server_audit.so 集成在 MariaDB 安装包中,可直接拷贝到 MySQL 社区版使用。

解决方案

方案一:MySQL 社区版安装 MariaDB 审计插件

1. 下载 MariaDB 安装包并提取插件文件

以 CentOS 系统 MySQL 5.7 版本为例(2023 年 5 月 15 日资料):

tar xvpf mariadb-10.2.44-linux-systemd-x86_64.tar.gz
cd mariadb-10.2.44-linux-systemd-x86_64/lib/plugin
ldd server_audit.so

2. 查看 MySQL plugin 存放地址

mysql> show global variables like 'plugin_dir';
+---------------+--------------------------------+
| Variable_name | Value                          |
+---------------+--------------------------------+
| plugin_dir    | /usr/local/mysql57/lib/plugin/ |
+---------------+--------------------------------+

3. 复制插件文件并更改权限

cp server_audit.so /usr/local/mysql57/lib/plugin/
chown mysql:mysql /usr/local/mysql57/lib/plugin/server_audit.so

4. 安装并配置插件

INSTALL PLUGIN server_audit SONAME 'server_audit.so';
SET GLOBAL server_audit_events = 'CONNECT,QUERY,TABLE';
SET GLOBAL server_audit_logging = ON;
SET GLOBAL server_audit_file_path = '/var/log/mysql/audit.log';

5. 永久生效配置(加入 my.cnf)

[mysqld]
server_audit_events = "CONNECT,QUERY,TABLE"
server_audit_logging = ON
server_audit_file_rotate_size = 100000000
server_audit_file_rotations = 10

方案二:MariaDB 10.5 原生配置审计日志

MariaDB 10.5 版本原生支持审计插件,无需额外安装。根据 2026 年 4 月 11 日的资料,在 CentOS 7 中安装 MariaDB 后,可直接通过以下命令配置:

SET GLOBAL server_audit_logging = ON;
SET GLOBAL server_audit_events = 'CONNECT,QUERY,TABLE';
SET GLOBAL server_audit_file_path = '/var/log/mariadb/audit.log';

注意:MariaDB 10.1 稳定版已将默认数据库从 MySQL 切换到 MariaDB,配置文件位置可能在/etc/my.cnf.d/。

方案三:MySQL 企业版内置审计功能

MySQL 企业版提供内置审计日志功能,根据 2024 年 11 月 21 日的对比资料,企业版包含高级安全功能如数据加密、访问控制、审计日志和安全审计。配置方式:

企业版审计日志在 MariaDB 10.5 与 MySQL 社区版配置方法有什么区别?
INSTALL PLUGIN audit_log SONAME 'audit_log.so';
SET GLOBAL audit_log_policy = ALL;
SET GLOBAL audit_log_format = JSON;

企业版用户可享受 Oracle 提供的商业级支持服务,包括 24/7 的技术支持。

注意事项

1. 插件版本兼容性:根据阿里云开发者社区 2022 年 7 月 12 日的资料,审计插件推荐使用>=1.4.4 版本,不同版本的审计插件功能不同,新版本的插件可以排除掉 select 语句。

2. 操作系统一致性:从 MariaDB 安装包中拷贝审计插件时,操作系统要选择一致,MySQL 安装在 CentOS 系统中,就要下载 CentOS 系统的 MariaDB 安装包,Windows 系统则需要 server_audit.dll 文件。

3. 权限问题:2023 年 5 月 15 日的资料中显示真实报错信息:ldd: warning: you do not have execution permission for'./server_audit.so',需执行 chmod +x server_audit.so 并更改插件属主。

4. 性能影响:开启 general log 作为审计替代方案时,日志量会非常庞大,对数据库性能有影响,且 general log 会记录大量无用信息,后期筛选有难度。

5. 功能差异:根据 2022 年 8 月 17 日的对比资料,MySQL 8.0 默认身份认证插件是 caching_sha2_password,而 MariaDB 不支持 MySQL X 协议,不能使用 mysqlsh 访问 MariaDB 服务器。

参考来源

来源:CSDN 博客 - 如何设置 MySQL 的审计日志?(2025 年 9 月 23 日)

来源:阿里云开发者社区 - 在 MySQL 社区版中安装 MariaDB 审计插件实现数据库审计 (2023 年 5 月 15 日)

来源:阿里云开发者社区 - MySQL 审计插件介绍 (2022 年 7 月 12 日)

来源:知乎/技术博客 - MySQL 企业版与社区版全面对比解析 (2024 年 11 月 21 日)