设为首页 加入收藏

TOP

MySQL audit访问日志记录
2017-02-21 08:16:00 】 浏览:2037
Tags:MySQL audit 访问 日志 记录

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


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


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


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle 10046事件 介绍(一) 下一篇MySQL5.7配置基于GTID的复制及GTI..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目