手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

MySQL audit访问日志记录

[日期:2017-02-17] 来源:Linux社区  作者:lee90 [字体: ]

假如某个数据库被人删除了,但是拥有数据库权限的人很多,这样有必要记录下每个人的操作纪律。但是如果开启了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'@'%';

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

root用户进去查看操记录:

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

wKioL1iljMbjxrhNAAA5LepxWLY922.png

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

wKiom1iljMbyrN7HAACCqJpVusU258.png

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

wKioL1iljMbA3owqAAA38kS6o_A949.png

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-02/140732.htm

linux
相关资讯       MySQL日志  MySQL访问日志 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款