mysql的连接首先都是要通过init-connect初始化,然后连接到实例。

我们利用这一点,通过在init-connect的时候记录下用户的thread_id,用户名和用户地址实现db的访问审计功能。

实现步骤

1、创建审计用的库表。

为了不与业务的库冲突,单独创建自己的库:

#建库表代码
create database db_monitor ;
use db_monitor ;
CREATE TABLE accesslog
( thread_id int(11) DEFAULT NULL,  #进程id
 log_time datetime default null,  #登录时间
 localname varchar(50) DEFAULT NULL, #登录名称,带详细ip 
 matchname varchar(50) DEFAULT NULL, #登录用户
 key idx_log_time(log_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

这个参数是可以动态调整的,也注意要加到配置文件my.cnf中,否则下次重启后就失效了;2、配置init-connect参数

mysql> show variables like 'init_connect%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| init_connect |    |
+---------------+-------+
1 row in set (0.00 sec
  

mysql>set global init_connect='insert into db_monitor.accesslog(thread_id, log_time,localname,matchname) values(connection_id(),now(),user(),current_user());'; 

在my.conf中添加

init_connect='insert into db_monitor.accesslog(thread_id, log_time,localname,matchname) values(connection_id(),now(),user(),current_user());'

3、授予普通用户对accesslog表的insert权限

该点很重要

该参数只对普通用户生效,有super权限的都不会有作用。

如果是普通用户,增加了该功能后,一定需要授权:

grant insert on db_monitor.accesslog to user@'%';

不授权的后果是,连接数据库会失败:

accesslog表没有insert权限的用户:

4、验证审计功能

某个用户对test库删除了一张表,看我们配合binlog日志是否能追踪到时哪个用户:

查看binlog:

可以看出来是哪个用户进行了操作,从而完成审计。

原文脚本之家

转载于:https://blog.51cto.com/quyong/1945674

mysql利用init-connect增加访问审计功能的实现相关推荐

  1. init-connect mysql_MySQL利用init-connect增加访问审计功能异常

    init-connet设置 注:该参数对超级用户不生效 -- 创建测试库 mysql> create database test; Query OK, 1 row affected (0.00 ...

  2. 微信朋友圈是访问腾讯服务器吗,微信朋友圈疑似增加“来访”新功能?网友:再也不看朋友圈了!...

    原标题:微信朋友圈疑似增加"来访"新功能?网友:再也不看朋友圈了! 微信朋友圈疑似增加"来访"新功能?网友:再也不看朋友圈了! 作为当今中国最大的社交软件,微信 ...

  3. mysql触发器中访问mssql数据表_[数据库]一个利用触发器(trigger)实现数据库表的审计功能(audit)的例子--针对ms sql实现...

    首先建立数据库Test,建立两个表,我们命名为grades和audit,利用audit实现对grades的审计功能,其中grades用于存放学生的成绩,包括"sdudentID,course ...

  4. mysql 操作审计_利用mysql的audit审计功能记录用户操作信息

    mysql数据库中我们如果想记录用户的操作信息,可以通过audit审计功能来来实现.该功能是被自动触发的,在文件plugin_audit.h中可以看到比较详细的定义.在audit插件中,可控制的变量包 ...

  5. 通过init-connect + binlog 实现MySQL审计功能

    背景: 假设这么一个情况,你是某公司mysql-DBA,某日突然公司数据库中的所有被人为删了. 尽管有数据备份,但是因服务停止而造成的损失上千万,现在公司需要查出那个做删除操作的人. 但是拥有数据库操 ...

  6. mysql所有的审计方法_mysql的审计功能

    mysql的审计功能 mysql服务器自身没有提供审计功能,但是我们可以使用init-connect + binlog的方法进行mysql的操作审计.由于mysql binlog记录了所有对数据库长生 ...

  7. mysql开启数据库审计功能_mysql数据库开启审计功能

    MySQL的审计功能,主要可以记录下对数据库的所有操作,包括登录.连接.对表的增删改查等,便于责任追溯,问题查找,当然一定方面也会影响数据库效率.根据 MySQL 版本的不同有两种分为企业版和社区版: ...

  8. mysql基于init-connect+binlog完成审计功能

    目前社区版本的mysql的审计功能还是比较弱的,基于插件的审计目前存在于Mysql的企业版.Percona和MariaDB上,但是mysql社区版本有提供init-connect选项,基于此我们可以用 ...

  9. mysql审计权限_MySQL对普通用户(没有super)开启审计功能

    最近有发现有坏蛋delete 了数据,找不到是哪个user 哪个host,发现mysql 是可以对没有super 权限的用户开启审计功能,oracle早就 最近有发现有坏蛋delete 了数据,找不到 ...

最新文章

  1. javascript Date 格式化
  2. jquery 选项卡插件
  3. 反射_Class对象功能概述
  4. linux下mysql安装
  5. JavaSE简单实现多线程聊天
  6. post postman 传递数组对象_如何使用postman做接口测试
  7. 聚类算法当中的K-means算法如何去做天猫淘宝的推广任务
  8. python加上子类的特性_Python里的元编程:控制产生的实例对象的特性以及实例
  9. c++ 传智课件_沪科版初中物理九年级全册第二节 科学探究:物质的比热容公开课优质课课件教案视频...
  10. #pragma comment使用
  11. 微博api unexpected response status: 403_抖音直播监控Api:开播查询
  12. pta mysql训练题集 (221-240)
  13. php更换banner图片,jQuery简单实现banner图片切换
  14. MyBatis学习总结-06:动态SQL
  15. 白杨SEO:品牌口碑业务指什么?企业品牌口碑如何推广与预防公关危机?
  16. GIT 清理远程已删除本地还存在的分支
  17. Python课程第六周笔记及作业练习
  18. ubuntu命令 图片 壁纸_[教程]Ubuntu下完整配置自动壁纸切换
  19. oeasy教您玩转python - 012 - # 刷新时间
  20. google map 看经度和纬度

热门文章

  1. 手把手带你入坑迁移学习(by 当过黑客的CTO大叔)
  2. 使用Swagger辅助开发Fabric Application的Web API
  3. 【DP】【单调队列】【NOI2005】瑰丽华尔兹
  4. 一部影响美国网络安全政策的电影
  5. Android 去除最上面应用名称及图标
  6. Unable to run Kiwi tests on iOS8 device
  7. mac terminal ssh client shuttle 免输密码
  8. 《R语言编程艺术》——第1章 1.0 快速入门
  9. android https双向认证
  10. 创建外网 ext_net - 每天5分钟玩转 OpenStack(104)