標籤:
近期,公司要求對MySQL 資料庫上操作進行審計;通過瞭解MySQL 官方企業版(付費版)本中整合了audit_log審計外掛程式,
但是社區開源版本中並不包含該外掛程式,也沒提供下載。
進一步瞭解 MariaDB 有一個名為server_audit.so審計外掛程式,據傳以前是可以獨立下載的。
但是我在官網沒找到下載連結,索性下載一個MariaDB 5.5.50 的二進位安裝包,解壓後從中撈一個 server_audit.so 檔案,
1.登入資料庫,查看plugin_dir目錄
mysql> SHOW GLOBAL VARIABLES LIKE ‘plugin_dir‘;
+---------------------+-----------------------------------------------------------------------------------------+
| Variable_name | Value |
+---------------------+------------------------------------------------------------------------------------------+
| plugin_dir | /usr/local/Percona-Server-5.5.33-rel31.1-566.Linux.x86_64/lib/mysql/plugin/ |
+---------------+------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
2.移動server_audit.so到plugin目錄中,然後修改檔案授權
mv server_audit.so /usr/local/Percona-Server-5.5.33-rel31.1-566.Linux.x86_64/lib/mysql/plugin/
chown mysql.mysql /usr/local/Percona-Server-5.5.33-rel31.1-566.Linux.x86_64/lib/mysql/plugin/server_audit.so
chmod 755 /usr/local/Percona-Server-5.5.33-rel31.1-566.Linux.x86_64/lib/mysql/plugin/server_audit.so
3、載入安裝該外掛程式
mysql> install plugin server_audit SONAME ‘server_audit.so‘;
Query OK, 0 rows affected (0.02 sec)
不需要重啟MySQL服務!
mysql> select * from mysql.plugin;
+---------------+--------------------+
| name | dl |
+---------------+--------------------+
| server_audit | server_audit.so |
+---------------+--------------------+
1 row in set (0.00 sec)
另一種安裝方法是修改配置,需要重啟mysql服務才會生效
[mysqld]
plugin-load=server_audit=server_audit.so
重啟MySQL服務!
這種安裝方式不會在 mysql.plugin 產生記錄
mysql> select * from mysql.plugin;
Empty set (0.00 sec)
4.查看server_audit的相關變數,並啟用審計功能
mysql> show global variables like ‘%server_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 | OOOOOOOOOO |
| 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 |
+-------------------------------+--------------------------------+
14 rows in set (0.00 sec)
server_audit_logging定義是否開啟,
server_audit_events定義了相關事件
常用審計事件有CONNECTION,QUERY,TABLE,QUERY_DDL,QUERY_DML
假設現在需要審計查詢執行情況.
mysql> set global server_audit_events=‘QUERY‘;
Query OK, 0 rows affected (0.00 sec)
mysql> set global server_audit_LOGGING=‘ON‘;
Query OK, 0 rows affected (0.00 sec)
5.在資料庫上執行查詢操作,即可在server_audit.log 中看到詳細的記錄資訊,server_audit.log檔案預設位於datadir 目錄下
20160811 16:11:40,ouzhou158,root,localhost,1872,7,QUERY,,‘SHOW GLOBAL VARIABLES LIKE \‘plugin_dir\‘‘,0
分別對應時間,伺服器名,發布sql的使用者名稱,主機,串連號,操作類型,語句文本和查詢執行是否成功
關於審計相關的選項說明,可以參考下面的連結
https://mariadb.com/kb/en/mariadb/server_audit-system-variables/
MySQL Percona server 5.5 安裝審計外掛程式