mysql的連線首先都是通過init_connect初始化,然後連線到例項。
我們利用這一點,通過在init_connect的時候記錄下使用者的thread_id,使用者名稱和使用者位址實現db的訪問審計功能。
首先我們先建立審計用的庫表
為了不與業務的庫衝突,單獨建立自己的庫:
create database db_monitor;
use db_monitor;
create table monitor (
thread_id int(11) default null, #執行緒id
log_time datetime default null, #登入時間
localname varchar(64) default null, #登入名稱,帶詳細ip
login_user varchar(32) default null, #登入使用者
key idx_log_time(log_time) #建立索引字段
)engine=innodb default charset=utf8;
執行init_connect需要的sql
這個引數是可以動態調整的,也注意要加到配置檔案my.cnf中,否則下次重啟就失效了;
mysql> show variables like 'init_connect%';
mysql> init_connect='insert into db_monitor.monitor(thread_id,log_time,localname,login_user) values(connection_id(),now(),user(),current_user());'
授予普通使用者對monitor表的insert許可權
該點很重要
該引數只對普通使用者生效,有super許可權的都不會有作用。
如果是普通使用者,增加了該功能後,一定要授權:
grant insert on db_monitor.monitor to user@'%';
驗證審計功能
通過binlog日誌檢視分析
mysql審計方案 MySQL審計功能
mysql審計功能介紹 之前有同事發現資料丟失,由於mysql自身沒有提供審計功能,查詢binlog可以看到操作時間與連線ip,並不顯示哪個使用者做的操作,詢問開發同事都說沒有做刪除操作,也沒辦法定位操作的人員證據,無奈只能恢復資料。general log會記錄詳細的sql執行記錄,但是生產環境如果...
mysql 審計外掛程式 MySQL審計外掛程式使用
or詳細的配置可以參考官方文件 解壓檔案 unzip audit plugin mysql 5.7 1.1.7 805 linux x86 64.zip 將安裝包libaudit plugin.so檔案複製到 plugin dir目錄 root localhost 10 07 none show g...
mysql審計框架 mysql審計平台搭建
yearning mysql sql語句審核平台。提供查詢審計,sql審核等多種功能 注意事項 僅依賴mysql資料庫。mysql版本必須5.7及以上版本,請事先自行安裝完畢且建立yearning庫,字符集應為utf8mb4 僅yearning所需mysql版本 yearning日誌僅輸出error...