MySQL audit访问日志记录 以及报错init_connect command failed

导读:本篇文章讲解 MySQL audit访问日志记录 以及报错init_connect command failed,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

假如某个数据库被人删除了,但是拥有数据库权限的人很多,这样有必要记录下每个人的操作纪律。但是如果开启了general log的话,日志又非常大。

下面的使用init_connect的方法还不错。

登录进mysql,创建一个日志表

create database accesslog;

use accesslog;

CREATE TABLE accesslog (id int(11) primary key auto_increment,user char(100),matchname varchar(30));

热配置生效

set global init_connect=‘insert into accesslog.accesslog values (connection_id(),user(),now());’

然后,vi /etc/my.cnf

在[mysqld]添加

init_connect=‘insert into accesslog.accesslog values (connection_id(),user(),now());’

将配置持久化到文件。

注意:

需要给普通用户加上操作insert操作accesslog.的权限,如:grant INSERT on accesslog. to’abc’@’%’;
如果不给普通用户授权会出现init_connect command failed

然后,创建几个普通级别权限的账号(需要给普通用户加上操作insert操作accesslog.*的权限),用这些低级别账户进去操作下数据库或者数据表。

root用户进去查看操记录:

select * from accesslog.accesslog; 类似如下:

假如我们现在发现数据库被人为误删了数据,则可从binlog中看到相关的事务的thread_id,如下图的红色部分38。

wKiom1iljMbyrN7HAACCqJpVusU258.png

再结合accesslog.accesslog里面的记录,可以看到是下图这个时间点登录的账户操作的。这样就有据可查。

wKioL1iljMbA3owqAAA38kS6o_A949.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/75705.html

(0)
小半的头像小半

相关推荐

半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!