MariaDB日志審計 幫你揪出內個干壞事兒的小子


Part1:誰干的?

做DBA的經常會遇到,一些表被誤操作了,被truncate、被delete、甚至被drop。引起這方面的原因大多數都是因為人為+權限問題導致的。一些公共賬戶,例如ceshi賬戶,所有的人都可以進行操作,由這些公共賬戶引起的誤操作,你在辦公室大喊:誰把我的表刪了?8成不會有人回應你。

 

審計日志功能,該技術主要在MariaDB10.0/10.1和Percona 5.6版本里實現。該功能在MySQL5.6/5.7企業版里也支持。本文主要介紹和演示MariaDB10.1中如何開啟審計日志,幫你揪出內個干壞事兒的小子~

 

Part2:構建環境

本文中,我們采用的MariaDB版本為10.1.16,當然用其他版本的MariaDB亦可,如何安裝MariaDB數據庫環境本文不做贅述,如果需要的可移步:

http://suifu.blog.51cto.com/9167728/1830575

 

下面介紹在MariaDB10.1.16中,安裝審計Audit Plugin插件的方法

在MariaDB數據庫中執行如下命令:

NSTALL PLUGIN server_audit SONAME 'server_audit.so';

具體代碼如下圖所示。

wKioL1fsYOqyR4VhAAD9zQVbwLs526.jpg

 

Warning:警告

這里值得注意的是,server_audit.so名字不是隨意取的,因為它會讀/usr/local/mariadb/lib/plugin目錄下的文件,如果說將其給明為mariadb-audit.so,就會拋出如下錯誤,因為plugin目錄下沒有該文件。

wKioL1fsYb2iSN-9AAEgvCrxd6w821.jpg

 

Part2:參數解釋

server_audit_events='CONNECT,QUERY,TABLE'表示惠濟路鏈接進來的IP、用戶名和表的DML/DDL/DCL操作。

server_audit_logging=ON 表示開啟審計日志服務。

server_audit_excl_users=helei 表示只記錄helei用戶的所有操作。

server_audit_file_rotate_size=1G 表示超過定義的1GB,日志會自動輪訓。

server_audit_file_path=server_audit.log 表示審計日志的路徑。

 

更多相關參數可以利用show variables like 'server_audit%';來查看,如下圖所示。

wKioL1fsYyzyL37_AAF7wyAmOiM317.jpg

 

Part3:開啟相關參數

server_audit_events、server_audit_logging等參數均為全局動態參數,可以直接在數據庫更改,命令如下:

set global server_audit_events='CONNECT,QUERY,TABLE';

set global server_audit_logging=ON;

wKiom1fsZH7CliSlAAHhMBHs5Ho029.jpg

 

 

Part4:檢查效果

在開啟相關參數后,無需重啟數據庫,可直接看到相關的操作已經被記錄到server_audit.log ,如下圖所示。

wKioL1fsZSOgGtCZAALxEbz5bss436.jpg

 

——總結——

自從有了審計功能,媽媽再也不用擔心我找不到“壞人”啦。由於筆者的水平有限,編寫時間也很倉促,文中難免會出現一些錯誤或者不准確的地方,不妥之處懇請讀者批評指正。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM