mysql基于init-connect+binlog完成审计功能
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql基于init-connect+binlog完成审计功能,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2711字,纯文字阅读大概需要4分钟。
内容图文
![mysql基于init-connect+binlog完成审计功能](/upload/InfoBanner/zyjiaocheng/474/71fb9808a20044ebb670a3c44ce585ec.jpg)
目前社区版本的mysql的审计功能还是比较弱的,基于插件的审计目前存在于Mysql的企业版、Percona和MariaDB上,但是mysql社区版本有提供init-connect选项,基于此我们可以用它来完成审计功能。
init-connect参数说明:
http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_init_connect
step1:创建用户数据库表
set names utf8 create database auditlog; create table auditlog.t_audit( id int not null auto_increment, thread_id int not null, login_time timestamp, localname varchar(50) default null, matchname varchar(50) default null, primary key (id) )ENGINE=InnoDB default charset=utf8 comment ‘审计用户登录信息‘;
step2:授权所有的用户拥有对审计表的插入权限
select concat("grant insert on auditlog.t_audit to ‘",user,"‘@‘",host,"‘;") from mysql.user; #拼结授权语句
…… flush privileges;
注意,以后每添加一个用户都必须授权此表的插入权限,要不会连接不上。
step3:设置init_connect参数
set global init_connect=‘insert into auditlog.t_audit(id,thread_id,login_time,localname,matchname) values(null,connection_id(),now(),user(),current_user());‘;并在配置文件中增加如下语句: init-connect=‘insert into auditlog.t_audit(id,thread_id,login_time,localname,matchname) values(null,connection_id(),now(),user(),current_user());‘ 以便下次重启时能生效
验证:
我们登陆后并删除一条记录,查看binlog,我们可以看到此操作的thread_id为7:然后我们来查看此表t_audit表:
[zejin] 3301>select * from auditlog.t_audit; +----+-----------+---------------------+---------------------------+-------------------------+ | id | thread_id | login_time | localname | matchname | +----+-----------+---------------------+---------------------------+-------------------------+ | 1 | 5 | 2016-08-10 11:01:07 | user_app@192.168.1.240 | user_app@192.168.1.% | | 2 | 6 | 2016-08-10 11:02:02 | user_app@192.168.1.236 | user_app@192.168.1.% | | 3 | 7 | 2016-08-10 11:19:54 | user_yunwei@192.168.1.240 | user_yunwei@192.168.1.% | +----+-----------+---------------------+---------------------------+-------------------------+ 3 rows in set (0.00 sec)
可以看到thread_id为7的用户为user_yunwei,在192.168.1.240机器上操作删除的,完成了对数据的简单审计。 扩展说明: 1.init-connect只会在连接时执行,不会对数据库产生大的性能影响 2.init-connect是在连接时执行的动作命令,故可以用它来完成其它的功能,如:init_connect=‘SET autocommit=0‘ 3.init-connect不会记录拥有super权限的用户记录,为了防止init_connect语句由于语法错误或权限问题而所有用户都登陆不了的情况,保证至少super用户能登陆并修改此值
mysql基于init-connect+binlog完成审计功能
标签:int login local use lob 设置 nod 文件 cal
本文系统来源:http://www.cnblogs.com/yangliheng/p/6270279.html
内容总结
以上是互联网集市为您收集整理的mysql基于init-connect+binlog完成审计功能全部内容,希望文章能够帮你解决mysql基于init-connect+binlog完成审计功能所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。