作為一名dba,有時候,總會遇到數(shù)據(jù)庫某個庫,某個表,某個字段異常,或者數(shù)據(jù)被莫名的刪除了,這個時候大家各種推斷是不是bug了啊,是不是被黑了啊。。。這個時候一個審計功能就凸顯出來了。
10年積累的網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先做網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有亳州免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
mariadb數(shù)據(jù)庫對審計插件(server_audit.so)支持比較良好,今天我們進行一個簡單安裝和測試
安裝方法也很簡單:INSTALL SONAME "server_audit.so"
這樣就安裝完成了,我們可以看看對應(yīng)的參數(shù)變量
這些參數(shù)和變量都是可以動態(tài)設(shè)置的,具體參數(shù)說明,見官網(wǎng):https://mariadb.com/kb/en/mariadb/server_audit-system-variables/
一般我們主要設(shè)置一下幾個參數(shù)就可以了
set global server_audit_events = QUERY /*這個參數(shù)有三個值connect,table,query
set globalserver_audit_file_rotate_size = 524288000 /*每個日志文件的大小
set global server_audit_file_rotations = 200
set global server_audit_file_path ="/data/MySQL/auditlog/server_audit.log" /*log文件路徑 必須保證/data/mysql/auditlog/這個路徑是存在的!而且 chown mysql.mysql ,否則將 開啟審計功能 后,將導(dǎo)致mysql報錯,甚至服務(wù)掛掉!
set global server_audit_logging = 1 /*開啟審計功能 強烈建議:在設(shè)置好以下參數(shù)完成后,再開啟
設(shè)置完成后,再將對應(yīng)參數(shù)添加到配置文件中
server_audit_logging = 1
server_audit_events = QUERY
server_audit_file_rotate_size = 524288000
server_audit_file_rotations = 200
server_audit_file_path =/data/mysql/auditlog/server_audit.log
下面我們看看實際效果,對比一下server_audit_events這個參數(shù)connet,table,query三個不同值的日志對比;
1.參數(shù)為server_audit_events= query時
日志內(nèi)容:
20161229 11:35:39,localhost.localdomain,root,localhost,42,745,QUERY,mysql,'show databases',0
20161229 11:35:55,localhost.localdomain,root,localhost,42,746,QUERY,mysql,'create database yhtest',0
20161229 11:36:03,localhost.localdomain,root,localhost,42,747,QUERY,mysql,'SELECT DATABASE()',0
20161229 11:36:03,localhost.localdomain,root,localhost,42,749,QUERY,yhtest,'show databases',0
20161229 11:36:03,localhost.localdomain,root,localhost,42,750,QUERY,yhtest,'show tables',0
20161229 11:36:42,localhost.localdomain,root,localhost,42,751,QUERY,yhtest,'create table yhtest(a int primary ,b int)',1064
20161229 11:36:56,localhost.localdomain,root,localhost,42,752,QUERY,yhtest,'create table yhtest(a int primary key ,b int)',0
20161229 11:37:35,localhost.localdomain,root,localhost,42,753,QUERY,yhtest,'insert into yhtest value(1,1),(2,2),(3,3)',0
20161229 11:37:46,localhost.localdomain,root,localhost,42,754,QUERY,yhtest,'select * from yhtest',0
20161229 11:38:07,localhost.localdomain,root,localhost,42,755,QUERY,yhtest,'delete from yhtest where a=1',0
20161229 11:38:15,localhost.localdomain,root,localhost,42,756,QUERY,yhtest,'drop table yhtest',0
20161229 15:45:07,localhost.localdomain,root,localhost,42,757,QUERY,yhtest,'show variables like \'server%\'',0
2.參數(shù)為server_audit_events=connect時 20161229 16:09:50,localhost.localdomain,root,localhost,42,0,DISCONNECT,yhtest,,0
20161229 16:09:54,localhost.localdomain,root,localhost,43,0,CONNECT,,,0
20161229 16:11:37,localhost.localdomain,root,localhost,43,0,DISCONNECT,yhtest2,,0
20161229 16:11:39,localhost.localdomain,root,localhost,44,0,CONNECT,,,0
20161229 16:12:06,localhost.localdomain,root,localhost,44,0,DISCONNECT,mysql,,0
3.參數(shù)為server_audit_events=table時 20161229 16:17:52,localhost.localdomain,root,localhost,47,857,CREATE,yhtest,t2,
20161229 16:17:59,localhost.localdomain,root,localhost,47,858,WRITE,mysql,table_stats,
20161229 16:17:59,localhost.localdomain,root,localhost,47,858,WRITE,mysql,column_stats,
20161229 16:17:59,localhost.localdomain,root,localhost,47,858,WRITE,mysql,index_stats,
20161229 16:17:59,localhost.localdomain,root,localhost,47,858,DROP,yhtest,t2,
20161229 16:18:04,localhost.localdomain,root,localhost,47,859,CREATE,yhtest,t3,
20161229 16:18:27,localhost.localdomain,root,localhost,47,860,WRITE,yhtest,t3,
20161229 16:19:04,localhost.localdomain,root,localhost,47,861,WRITE,yhtest,t3,
20161229 16:19:18,localhost.localdomain,root,localhost,47,862,WRITE,mysql,table_stats,
20161229 16:19:18,localhost.localdomain,root,localhost,47,862,WRITE,mysql,column_stats,
20161229 16:19:18,localhost.localdomain,root,localhost,47,862,WRITE,mysql,index_stats,
20161229 16:19:18,localhost.localdomain,root,localhost,47,862,DROP,yhtest,t3,
從上面可以看出,我們需要一般我們使用query就足夠了,需要注意的是我們在使用這個插件的時候需要注意磁盤空間,如果數(shù)據(jù)庫操作頻繁,可能產(chǎn)生大量的日志!