mysql binlog ip_mysql 用init-connect+binlog实现用户操作追踪做access的ip的log记录

在MYSQL中,每个连接都会先执行init-connect,进行连接的初始化。我们可以在这里获取用户的登录名称和thread的ID值。然后配合binlog,就可以追踪到每个操作语句的操作时间,操作人等。实现审计。

实验过程:

1:创建登录日志库,登录日志表

CREATE DATABASE `accesslog`;

USE `accesslog`;

CREATE TABLE `accesslog`

(

`id` int(11) NOT NULL AUTO_INCREMENT,

`thread_id` int(11) DEFAULT NULL, #线程ID,这个值很重要

`log_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, #登录时间

`localname` varchar(30) DEFAULT NULL, #登录名称带IP

`matchname` varchar(30) DEFAULT NULL, #登录用户,user的全称

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

2:在配置文件中配置init-connect参数。登录时插入日志表。如果这个参数是个错误的SQL语句,登录就会失败。

Linux 下的配置文件为 my.cnf,windows下为my.ini

init-connect='insert into accesslog.accesslog values(null,connection_id(),now(),user(),current_user());'

log-bin

重启service mysqld 以使其配置文件生效

3:创建普通用户,不能有super权限。init-connect对具有super权限的用户不起作用。同时此用户必须要有INSERT权限,如果没有,登录后的任何操作都会导致MYSQL登录失败。

grant insert,select,update on *.* to 'user1'@'localhost'; #带INSERT权限

grant select,update on *.* to 'user2'@'localhost'; #不带INSER

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值