mysql利用init-connect增加访问审计功能的实现
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增加访问审计功能的实现相关推荐
- init-connect mysql_MySQL利用init-connect增加访问审计功能异常
init-connet设置 注:该参数对超级用户不生效 -- 创建测试库 mysql> create database test; Query OK, 1 row affected (0.00 ...
- 微信朋友圈是访问腾讯服务器吗,微信朋友圈疑似增加“来访”新功能?网友:再也不看朋友圈了!...
原标题:微信朋友圈疑似增加"来访"新功能?网友:再也不看朋友圈了! 微信朋友圈疑似增加"来访"新功能?网友:再也不看朋友圈了! 作为当今中国最大的社交软件,微信 ...
- mysql触发器中访问mssql数据表_[数据库]一个利用触发器(trigger)实现数据库表的审计功能(audit)的例子--针对ms sql实现...
首先建立数据库Test,建立两个表,我们命名为grades和audit,利用audit实现对grades的审计功能,其中grades用于存放学生的成绩,包括"sdudentID,course ...
- mysql 操作审计_利用mysql的audit审计功能记录用户操作信息
mysql数据库中我们如果想记录用户的操作信息,可以通过audit审计功能来来实现.该功能是被自动触发的,在文件plugin_audit.h中可以看到比较详细的定义.在audit插件中,可控制的变量包 ...
- 通过init-connect + binlog 实现MySQL审计功能
背景: 假设这么一个情况,你是某公司mysql-DBA,某日突然公司数据库中的所有被人为删了. 尽管有数据备份,但是因服务停止而造成的损失上千万,现在公司需要查出那个做删除操作的人. 但是拥有数据库操 ...
- mysql所有的审计方法_mysql的审计功能
mysql的审计功能 mysql服务器自身没有提供审计功能,但是我们可以使用init-connect + binlog的方法进行mysql的操作审计.由于mysql binlog记录了所有对数据库长生 ...
- mysql开启数据库审计功能_mysql数据库开启审计功能
MySQL的审计功能,主要可以记录下对数据库的所有操作,包括登录.连接.对表的增删改查等,便于责任追溯,问题查找,当然一定方面也会影响数据库效率.根据 MySQL 版本的不同有两种分为企业版和社区版: ...
- mysql基于init-connect+binlog完成审计功能
目前社区版本的mysql的审计功能还是比较弱的,基于插件的审计目前存在于Mysql的企业版.Percona和MariaDB上,但是mysql社区版本有提供init-connect选项,基于此我们可以用 ...
- mysql审计权限_MySQL对普通用户(没有super)开启审计功能
最近有发现有坏蛋delete 了数据,找不到是哪个user 哪个host,发现mysql 是可以对没有super 权限的用户开启审计功能,oracle早就 最近有发现有坏蛋delete 了数据,找不到 ...
最新文章
- javascript Date 格式化
- jquery 选项卡插件
- 反射_Class对象功能概述
- linux下mysql安装
- JavaSE简单实现多线程聊天
- post postman 传递数组对象_如何使用postman做接口测试
- 聚类算法当中的K-means算法如何去做天猫淘宝的推广任务
- python加上子类的特性_Python里的元编程:控制产生的实例对象的特性以及实例
- c++ 传智课件_沪科版初中物理九年级全册第二节 科学探究:物质的比热容公开课优质课课件教案视频...
- #pragma comment使用
- 微博api unexpected response status: 403_抖音直播监控Api:开播查询
- pta mysql训练题集 (221-240)
- php更换banner图片,jQuery简单实现banner图片切换
- MyBatis学习总结-06:动态SQL
- 白杨SEO:品牌口碑业务指什么?企业品牌口碑如何推广与预防公关危机?
- GIT 清理远程已删除本地还存在的分支
- Python课程第六周笔记及作业练习
- ubuntu命令 图片 壁纸_[教程]Ubuntu下完整配置自动壁纸切换
- oeasy教您玩转python - 012 - # 刷新时间
- google map 看经度和纬度