日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2025/5/22 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql基于init-connect+binlog完成审计功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

目前社區版本的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用戶能登陸并修改此值

?

?

轉載于:https://www.cnblogs.com/zejin2008/p/5756192.html

總結

以上是生活随笔為你收集整理的mysql基于init-connect+binlog完成审计功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。