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';
具體代碼如下圖所示。
Warning:警告
這里值得注意的是,server_audit.so名字不是隨意取的,因為它會讀/usr/local/mariadb/lib/plugin目錄下的文件,如果說將其給明為mariadb-audit.so,就會拋出如下錯誤,因為plugin目錄下沒有該文件。
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%';來查看,如下圖所示。
Part3:開啟相關參數
server_audit_events、server_audit_logging等參數均為全局動態參數,可以直接在數據庫更改,命令如下:
set global server_audit_events='CONNECT,QUERY,TABLE';
set global server_audit_logging=ON;
Part4:檢查效果
在開啟相關參數后,無需重啟數據庫,可直接看到相關的操作已經被記錄到server_audit.log ,如下圖所示。
——總結——
自從有了審計功能,媽媽再也不用擔心我找不到“壞人”啦。由於筆者的水平有限,編寫時間也很倉促,文中難免會出現一些錯誤或者不准確的地方,不妥之處懇請讀者批評指正。





