如何使用MySQL Binlog Digger 4.17对mysql 8.0进行审计

注意:这种方式仅能对普通用户进行审计, 例如非root用户

Step 1.建立访问表, 用于存储登录信息

-- 建库

mysql> CREATE DATABASE `auditdb` DEFAULT CHARSET utf8mb4;

-- 建表

mysql> CREATE TABLE `auditdb`.`accesslog` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `ServerID` int(11) DEFAULT NULL,
  `ConnectionID` int(11) DEFAULT NULL,
  `ConnUser` varchar(30) DEFAULT NULL,
  `MatchUser` varchar(30) DEFAULT NULL,
  `LoginTime` datetime DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

 

Step2. 为普通用户赋予写入权限(高级用户可以不赋予,因为高级用户已具备写入权限)

mysql> grant insert on `auditdb`.`accesslog` to 所有普通用户@具体主机;

mysql> flush privileges;

查看普通用户可以通过以下命令查找:
mysql> select user, host from mysql.user where user !='root';  -- 或其它不具备超级管理权限的用户
 

Step3. 在目标数据库的[mysqld]中增加以下:

init-connect='insert into auditdb.accesslog(ServerID, ConnectionID ,ConnUser ,MatchUser ,LoginTime) values(@@server_id, connection_id(),user(),current_user(),now());'

*** 配置init-connect完成后,需要重启mysql(生产环境请慎重) ***

 

Step 4. 下载并安装MySQL Binlog Digger 4.17

https://download.csdn.net/download/bournetai/13084868

 

注意:MySQL binlog Digger的挖掘用户(数据库账号)在mysql 8.0需要super或binlog_admin或replication slave权限, 而在mysql 5.7中则需要super或replication slave权限

 

Step 5.使用MySQL Binlog Digger 4.17进行dml操作审计(如果进行ddl审计, 则操作类型选择ddl)

# 挖掘dml

 

 


# 挖掘ddl

 

注意:若访问表不存在或访问表中的信息与Binlog中的信息匹配不上,则不会显示审计信息(Server id, Thread id, connUser, matchUser, loginTime)

Redo:表示已经发生的重做信息
Seq:表示在挖掘重做结果中的序号
Server id:表示mysql> select @@server_id;
Thread id:表示Connection ID
ConnUser:表示UserName+IP(客户端IP)
MatchUser:表示在mysql.user存在的用户,且客户端以此用户登录
LoginTime:表示用户登录时间

GTID_NEXT:表示全局事务ID,一次事务或一次非事务操作都会产生一个新的gtid,它对应着一个Query

Query Time:表示一次操作的开始时间,这个操作可能是一个事务,也可能是非事务的一次操作
Query Log Pos:表示Query的position范围,它仅包括Query, 这个范围在GTID_NEXT之后,在具体STMT(SQL)之前
Query Exec_time:表示这次操作的耗时(单位:秒),这个操作可能是一个事务,也可能是非事务的一次操作
Query Error_code: 0表示执行成功,而-1表示有异常

Stmt Time:具体某条Stmt(SQL)的开始执行时间,例如在同一事务中,各Stmt(SQL)都有各自的开始执行时间,但具体相同的GTID_NEXT与Query
Stmt Log Pos:具体某条Stmt(SQL)的position范围,例如在同一事务中,各Stmt(SQL)都有各自的开始position与结束position,但具体相同的GTID_NEXT与Query

总之:GTID_NEXT与Query一一对应,而它们却包括一条或多条STMT(具体SQL)

 

此外,MySQL Binlog Digger 4.17还具备mysqlbinlog挖掘分析功能,可以为误删、误增、误改提供回滚SQL功能,此外还支持DDL重做操作挖掘.

 

### 声明 ### 

十分感谢您使用本工具, 本工具为免费产品, 对于因本工具而造成的损失, 本工作室概不承担! 因本人水平有限, 如发现不足, 请多多请正.

 

广州逆舟数据工作室 Bourne QQ:649869986 微信:wxid_glzhz1qg2xre22

2020-11-03 广州

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值