1. 配置 MariaDB 开启 binlog
- 编辑 MariaDB 配置文件:通常为
my.cnf
或 my.ini
,在配置文件中添加或修改以下配置项:
[mysqld]
log-bin=/var/lib/mysql/mysql-bin.log # binlog 文件路径,可自行定义
server-id=1 # 服务器唯一标识,不同服务器需不同值
- 重启 MariaDB 服务:使配置生效。
2. 确定要审计的特定用户
- 查看当前数据库用户:在 MariaDB 命令行中执行
SELECT user, host FROM mysql.user;
,确认要审计的特定用户及其对应的主机信息。
3. 分析 binlog 操作记录
- 使用 mysqlbinlog 工具:该工具随 MariaDB 安装包一同提供。
- 查看 binlog 文件:先找到正在使用的 binlog 文件,可通过
SHOW MASTER STATUS;
命令获取。例如,假设 binlog 文件名为 mysql-bin.000001
。
- 过滤特定用户操作:如果要查找特定用户对敏感表(如包含用户密码的表,假设表名为
user_passwords
)的操作,可以使用如下命令(假设用户名为 audit_user
):
mysqlbinlog --base64-output=decode-rows -v /var/lib/mysql/mysql-bin.000001 | grep -B 10 -A 10 'audit_user' | grep -i 'user_passwords'
- 参数说明:
--base64 - output=decode - rows
:将二进制日志中的行数据解码为更易读的格式。
-v
:显示详细信息。
grep -B 10 -A 10 'audit_user'
:查找包含 audit_user
的行,并显示其前后 10 行,以便获取完整的操作上下文。
| grep -i 'user_passwords'
:进一步过滤出与敏感表 user_passwords
相关的操作。
- 使用第三方工具:如
pt - query - digest
等,这些工具可以对 binlog 进行更复杂的分析和处理,能以更直观的方式展示特定用户对敏感表的操作,例如统计操作频率、操作类型分布等。但使用前需确保已安装该工具,使用方法根据工具文档进行相应配置和操作。