Part1:誰幹的?數據庫
作DBA的常常會遇到,一些表被誤操做了,被truncate、被delete、甚至被drop。引發這方面的緣由大多數都是由於人爲+權限問題致使的。一些公共帳戶,例如ceshi帳戶,全部的人均可以進行操做,由這些公共帳戶引發的誤操做,你在辦公室大喊:誰把個人表刪了?8成不會有人迴應你。ide
審計日誌功能,該技術主要在MariaDB10.0/10.1和Percona 5.6版本里實現。該功能在MySQL5.6/5.7企業版裏也支持。本文主要介紹和演示MariaDB10.1中如何開啓審計日誌,幫你揪出內個幹壞事兒的小子~ui
Part2:構建環境spa
本文中,咱們採用的MariaDB版本爲10.1.16,固然用其餘版本的MariaDB亦可,如何安裝MariaDB數據庫環境本文不作贅述,若是須要的可移步:插件
http://suifu.blog.51cto.com/9167728/1830575 日誌
下面介紹在MariaDB10.1.16中,安裝審計Audit Plugin插件的方法orm
在MariaDB數據庫中執行以下命令:server
NSTALL PLUGIN server_audit SONAME 'server_audit.so';blog
具體代碼以下圖所示。get
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 ,以下圖所示。
——總結——
自從有了審計功能,媽媽不再用擔憂我找不到「壞人」啦。因爲筆者的水平有限,編寫時間也很倉促,文中不免會出現一些錯誤或者不許確的地方,不妥之處懇請讀者批評指正。