您好,登錄后才能下訂單哦!
本文主要給大家介紹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:
可以看出來是哪個用戶進行了操作,從而完成審計。
原文腳本之家
看了以上關于mysql利用init-connect初始化實現連接到實例,希望能給大家在實際運用中帶來一定的幫助。本文由于篇幅有限,難免會有不足和需要補充的地方,如有需要更加專業的解答,可在官網聯系我們的24小時售前售后,隨時幫您解答問題的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。