前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL audit访问日志记录

MySQL audit访问日志记录

作者头像
保持热爱奔赴山海
发布2019-09-18 10:42:56
2.5K0
发布2019-09-18 10:42:56
举报
文章被收录于专栏:数据库相关

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

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

wKiom1iljMbyrN7HAACCqJpVusU258.png
wKiom1iljMbyrN7HAACCqJpVusU258.png

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

wKioL1iljMbA3owqAAA38kS6o_A949.png
wKioL1iljMbA3owqAAA38kS6o_A949.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/02/16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档