原生 server_audit 插件(MariaDB 10.0+ 内置)
启用步骤
-- 1. 安装插件
INSTALL PLUGIN server_audit SONAME 'server_audit';
-- 2. 配置参数(动态生效,持久化需写入 my.cnf)
SET GLOBAL server_audit_file_rotate_size = 1024*1024*1024; -- 1GB 分片
SET GLOBAL server_audit_events = 'QUERY,TABLE'; -- 审计查询+表访问
SET GLOBAL server_audit_excl_users = '101023161'; -- 排除监控用户
SET GLOBAL server_audit_file_rotate_now = ON; -- 立即切分
SET GLOBAL server_audit_logging = 'ON'; -- 开启审计
-- 3. 验证
SHOW VARIABLES LIKE 'server_audit%';
关键参数速查
| 参数 | 说明 | 建议 |
server_audit_events | 审计事件类型:CONNECT, QUERY, TABLE, QUERY_DDL, QUERY_DML... | 按需最小集,减少噪音 |
server_audit_incl_users | 仅审计指定用户(白名单) | 与 excl_users 二选一 |
server_audit_file_path | 日志文件路径(相对 datadir) | 建议挂载独立磁盘 |
server_audit_file_rotate_size | 单文件最大字节 | 100MB-1GB |
server_audit_file_rotations | 保留文件数 | 7-30 |
server_audit_query_log_limit | 记录 SQL 最大长度 | 1024-4096 |
server_audit_output_type | file / syslog | file 便于分析 |
日志格式示例
20160825 19:05:03,host,db_user,127.0.0.1,36,434,QUERY,mysql,'SELECT ...',0
# 时间,主机,用户,来源IP,线程ID,查询ID,类型,数据库,SQL,影响行数
第三方 McAfee MySQL Audit Plugin(兼容 MariaDB)
版本匹配关键
- 插件版本必须与 MariaDB 版本严格对应(如
mariadb-10.0 对应 audit-plugin-mariadb-10.0-1.1.0)。
- 版本不匹配报错:
ERROR 1126 (HY000): Can't open shared library。
部署步骤
# 1. 下载对应版本
wget https://dl.bintray.com/mcafee/mysql-audit-plugin/audit-plugin-mariadb-10.0-1.1.0-625-linux-x86_64.zip
# 2. 解压并复制 .so 到 plugin_dir
unzip audit-plugin-mariadb-10.0-1.1.0-625-linux-x86_64.zip
cp audit-plugin-mariadb-10.0-1.1.0-625/lib/libaudit_plugin.so /usr/local/mariadb/lib/plugin/
# 3. 安装插件
INSTALL PLUGIN AUDIT SONAME 'libaudit_plugin.so';
# 4. 配置(参考官方 README,支持 JSON 格式输出、过滤规则等高级功能)
对比与选型
| 维度 | 原生 server_audit | McAfee Audit Plugin |
| 安装便捷度 | 内置,一条命令 | 需下载匹配版本 .so |
| 输出格式 | CSV 文本 | JSON、CSV、Syslog 多格式 |
| 过滤能力 | 用户白/黑名单 | 正则规则、对象级过滤 |
| 性能开销 | 低 | 略高(功能更丰富) |
| 维护状态 | MariaDB 官方维护 | 社区维护,更新较慢 |
运维建议
- 审计日志单独挂载高 IOPS 盘,避免影响主库性能。
- 配合 Logrotate 或
server_audit_file_rotations 自动清理旧日志。
- 生产环境建议仅审计
DDL/DML,SELECT 量大可采样或排除。
- 定期导入 ELK/ClickHouse 做审计分析、合规报表。