安裝插件
[mysqld]
...
plugin_load=server_audit=server_audit.so
...
審計日誌類型參數
server_audit_events:CONNECT,QUERY,TABLE
簡單測試:
- CONNECT:只選擇此值,會記錄每次的連接創建和斷開
20171219 11:19:08,hostname,root,localhost,24,0,DISCONNECT,,,0
20171219 11:19:09,hostname,root,localhost,25,0,CONNECT,,,0
20171219 11:19:31,hostname,root,localhost,25,0,DISCONNECT,,,0
- TABLE:只選擇此值,不會記錄連接記錄
20171219 11:20:26,hostname,root,localhost,27,182,READ,username,t,
20171219 11:20:46,hostname,root,localhost,27,183,ALTER,username,t,
20171219 11:20:46,hostname,root,localhost,27,183,READ,username,t,
- QUERY:只選擇此值,DML/DDL統一歸納爲query,沒有單獨的操作狀態提示
20171219 11:21:47,hostname,root,localhost,29,192,QUERY,username,'show tables',0
20171219 11:21:56,hostname,root,localhost,30,195,QUERY,,'select @@version_comment limit 1',0
20171219 11:21:58,hostname,root,localhost,30,196,QUERY,,'SELECT DATABASE()',0
20171219 11:21:58,hostname,root,localhost,30,198,QUERY,username,'show databases',0
20171219 11:21:58,hostname,root,localhost,30,199,QUERY,username,'show tables',0
20171219 11:22:17,hostname,root,localhost,30,201,QUERY,username,'alter table t drop index name',0
此參數默認值爲空,即選擇CONNECT,QUERY,TABLE
20171219 11:24:20,hostname,root,localhost,35,0,CONNECT,,,0
20171219 11:24:20,hostname,root,localhost,35,214,QUERY,,'select @@version_comment limit 1',0
20171219 11:24:24,hostname,root,localhost,35,215,QUERY,,'SELECT DATABASE()',0
20171219 11:24:24,hostname,root,localhost,35,217,QUERY,username,'show databases',0
20171219 11:24:24,hostname,root,localhost,35,218,QUERY,username,'show tables',0
20171219 11:24:29,hostname,root,localhost,35,220,READ,username,t,
20171219 11:24:29,hostname,root,localhost,35,220,QUERY,username,'select * from t',0
20171219 11:24:36,hostname,root,localhost,35,221,WRITE,username,t,
20171219 11:24:36,hostname,root,localhost,35,221,QUERY,username,'delete from t',0
20171219 11:24:59,hostname,root,localhost,35,222,ALTER,username,t,
20171219 11:24:59,hostname,root,localhost,35,222,READ,username,t,
20171219 11:24:59,hostname,root,localhost,35,222,QUERY,username,'alter table t add index (name)',0
完整的記錄
記錄開關參數
server_audit_logging:開啓審計日誌記錄日誌參數(ON/OFF)
白名單參數
server_audit_incl_users:記錄指定用戶的操作
server_audit_excl_users:不去記錄指定用戶的操作
日誌相關參數
日誌文件可以單獨的存在一個文件中,或者與syslog放在同一個文件中
- 本地日誌
- server_audit_output_type:文件類型,file
- server_audit_file_rotate_now:日誌輪詢寫開關(默認off)(ps:測試發現參數可以動態調整不生效,但無論是on還是off好像只要指定了副本數後自動輪詢。。測試版本10.1.22)
- server_audit_file_path:日誌文件名和位置
- server_audit_file_rotate_size:日誌文件大小,單位值byte
- server_audit_file_rotations:輪詢的文件個數
- 遠程日誌
- server_audit_output_type:文件類型:syslog
- server_audit_syslog_ident:如下面範例所示:mysql-server_auditing
- server_audit_syslog_info:如下面範例所示:prod1
Aug 717:19:58localhostmysql-server_auditing: <prod1> localhost.localdomain,root,localhost,1,7, QUERY, mysql, 'SELECT * FROM user',0
其他參數
server_audit_query_log_limit:能夠展現的最大sql長度,如果sql寫的超過閥值,會被階段。默認1024
server_audit_mode:沒實際意義,內部參數
- syslog相關
- server_audit_syslog_priority
- server_audit_syslog_facility
- server_audit_syslog_info
本地輸出審計日誌格式
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],CONNECT,[database],,0
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],DISCONNECT,,,0
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],FAILED_CONNECT,,,[retcode]
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],CREATE,[database],[object],
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],READ,[database],[object],
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],WRITE,[database],[object],
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],ALTER,[database],[object],
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],RENAME,[database],
[object_old]|[database_new].[object_new],
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],DROP,[database],[object],
壓測性能損耗
壓測到服務器瓶頸
audit開啓
general_log開啓
注:測試線條比較粗,僅供參考