企业版审计日志在 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.so2. 查看 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.so4. 安装并配置插件
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 日的对比资料,企业版包含高级安全功能如数据加密、访问控制、审计日志和安全审计。配置方式:
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 日)