iT邦幫忙

0

下載安裝Mysql審計功能server_audit.so

----可以找出誰動過DB下過什麼指令....等,是誰DROP.DELETE.TRUNCATE了DB----
先查詢Mysql版本

mysql -V

相關訊息如下
mysql Ver 14.14 Distrib 5.6.41, for linux-glibc2.12 (x86_64) using EditLine wrapper

進入Mysql執行,查詢確認路徑

mysql>show variables like "%plugin%";

+——————————————+——————————————————————————————+
| Variable_name| Value                        |
+——————————————+——————————————————————————————+
| plugin_dir   | /usr/local/mysql/lib/plugin/ |
+——————————————+——————————————————————————————+

查找一下路徑內有無server_audit.so的文件

find / -name "server_audit.so"

有就忽略下載方式經檔案移動到,Mysql查詢到的路徑下

mv "find查詢後顯示的路徑"  /usr/local/mysql/lib/plugin/ 

沒有就下載server_audit.so到/usr/local/mysql/lib/plugin/下的路徑

https://downloads.mariadb.org/ ←可查詢適合的版本

下載方式1.直接LINUX下載,
※檔案有點大,裡面東西很多,因為找不到單獨的檔案!解壓之後把要的CP或MV到路徑下,其他的東西就可以刪了

wget https://download.mariadb.org/f/mariadb-10.2.19/bintar-linux-x86_64/mariadb-10.2.19-linux-x86_64.tar.gz

解壓縮

tar zxvf mariadb-10.2.19-linux-x86_64.tar.gz

因下載在我放在tmp下所以從tmp移到/usr/local/mysql/lib/plugin/
*檔案正常在mariadb-10.2.19-linux-x86_64/lib/plugin/server_audit.so

find / -name "server_audit.so"
mv /tmp/mariadb-10.2.19-linux-x86_64/lib/plugin/server_audit.so  /usr/local/mysql/lib/plugin/

下載方式2.存在自己的電腦後,再解壓,直接COPY- server_audit.so 檔再移到系統內
並增加server_audit.so執行權限

chmod +x server_audit.so

接下來進行設定及排程,進入Mysql安裝server_audit.so插件

mysql>INSTALL PLUGIN server_audit SONAME "server_audit.so";

查看配置內容

mysql>show variables like “%audit%";

+--------------------------------+-----------------------+ 
|Variable_name                   | Value                 |
+--------------------------------+-----------------------+
| server_audit_events            |                       |    
| server_audit_excl_users        |                       |    
| server_audit_file_path         | server_audit.log      |    
| server_audit_file_rotate_now   | OFF                   |    
| server_audit_file_rotate_size  | 1000000               |    
| server_audit_file_rotations    | 9                     |    
| server_audit_incl_users        |                       |    
| server_audit_loc_info          |                       |    
| server_audit_logging           | OFF                   |   
| server_audit_mode              | 1                     |    
| server_audit_output_type       | file                  |    
| server_audit_query_log_limit   | 1024                  |
| server_audit_syslog_facility   | LOG_USER              |     
| server_audit_syslog_ident      | mysql-server_auditing |  
| server_audit_syslog_info       |                       |     
| server_audit_syslog_priority   | LOG_INFO              |
+--------------------------------+-----------------------+
  • server_audit_events=指定記錄事件的類型,可以用逗號分隔的多個值(connect,query,table),如果開啟了查詢緩存(query cache),查詢直接從查詢緩存返回數據,將沒有table記錄

在文件裡 Logging events 一節提到的可設定的 Type,說明如下
-CONNECT —–連接,斷開連接和連接失敗-包括錯誤代碼
-QUERY —–執行的查詢及其結果以純文本形式顯示,包括由於語法或權限錯誤導致的查詢失敗
-TABLE —–哪些 Tables 因此 QUERY 而受影響
-QUERY_DDL —–DDL 的 Query,是 QUERY的子集合 過濾DDL類型的查詢(CREATE、ALTER和DROP、RENAME以及TRUNCATE語句-除了CREATE/DROP [PROCEDURE / FUNCTION / USER]和RENAME USE
-QUERY_DML —–DML 的 Query,是 QUERY的子集合 過濾DML類型的查詢(DO、CALL、LOAD DATA/XML、DELETE、INSERT、SELECT、UPDATE、HANDLER和REPLACE語句)
-QUERY_DML_NO_SELECT —– 與QUERY_DML同但不記錄SELECT查詢相同。(因為版本1.4.4)(DO、CALL、LOAD DATA/XML、DELETE、INSERT、UPDATE、HANDLER、REPLACE )
-QUERY_DCL ——DCL 的 Query,是 QUERY的子集 過濾DCL型查詢(CREATE USER、DROP USER、RENAME USER、GRANT、REVOKE和SET PASSWORD語句)

  • server_audit_excl_users=該列表的用戶行為將不記錄,connect將不受該設置影響
  • server_audit_file_path=如server_audit_output_type為FILE,使用該變量設置存儲日誌的文件,可以指定目錄,默認存放在數據目錄的server_audit.log文件中
  • server_audit_file_rotate_now=強制日志文件輪轉,切新檔的意思
  • server_audit_file_rotate_size=限制日志文件的大小
  • server_audit_file_rotations=指定日誌文件的數量,如果為0日誌將從不輪轉
  • server_audit_incl_users=指定哪些用戶的活動將記錄,connect將不受此變量影響,該變量比server_audit_excl_users優先級高
  • server_audit_loc_info=指定的info字符串將添加到syslog記錄
  • server_audit_logging=啟動或關閉計功能
  • server_audit_mode=標識版本,用於開發測試
  • server_audit_output_type=指定日志輸出類型,可為SYSLOG或FILE
  • server_audit_query_log_limit=日志的大小
  • server_audit_syslog_facility=默認為LOG_USER,指定facility
  • server_audit_syslog_ident=設置ident,作為每個syslog記錄的一部分
  • server_audit_syslog_info=指定的info字符串將添加到syslog記錄
  • server_audit_syslog_priority=定義記錄日志的syslogd priority

進入Mysql執行:變更全局變量
若伺服器已啟動,不便重開故可直接於Mysql下執行!
亦可至my.cnf設置,但需重啟!

mysql>set global server_audit_events="CONNECT,QUERY,TABLE,QUERY_DDL,QUERY_DML,QUERY_DCL";
mysql>set global server_audit_file_path ="/data/audit_log/server_audit.log";
mysql>set global server_audit_file_rotate_size=1073741824;
mysql>set global server_audit_file_rotations=0;
mysql>set global server_audit_output_type=file;

接著建議先查看變量是否有更動

mysql>show variables like "server_audit%";

確定指定的變量都改變了之後,再將審計功能啟動

mysql>set global server_audit_logging=on;  

可再次查看是否啟動成功 ,啟動成功就可以到指定資料夾查看使用者操作記錄!


尚未有邦友留言

立即登入留言