開啟mysql審計功能


下面方式是在線開啟,重啟后會失效:
1.mysql社區版沒有審計插件, 先獲取server_audit.so文件,我是先在一台測試服務器上安裝了一個mariadb數據庫,然后搜索find / -name server_audit.so文件,scp復制出來的,也可以直接去mariadb官網下載一個二進制包找;
2.獲取到 server_audit.so包后,把文件cp到mysql插件的路徑下:
cp /tmp/server_audit.so /usr/local/mysql/lib/plugin/
3.登錄mysql安裝插件
mysql> INSTALL PLUGIN server_audit SONAME 'server_audit.so';
Query OK, 0 rows affected (0.00 sec)
4.檢查審計功能是否開啟,沒有開啟則開啟
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 |
+-------------------------------+-----------------------+
16 rows in set (0.00 sec)
5.開啟審計功能
mysql> set global server_audit_logging=on;
Query OK, 0 rows affected (0.00 sec)
6.用 show variables like '%audit%';查看是否已經開啟,開啟后ON代表開啟,OFF代表沒有開啟
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 | ON |
| 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 |
+-------------------------------+-----------------------+
16 rows in set (0.00 sec)
7.查看審計效果
[root@smiletest mysql]# tail -f server_audit.log
20190903 09:24:18,smiletest,root,localhost,2,0,FAILED_CONNECT,,,1045
20190903 09:24:23,smiletest,root,localhost,3,0,CONNECT,,,0
20190903 09:24:23,smiletest,root,localhost,3,3,QUERY,,'select @@version_comment limit 1',0
20190903 09:24:25,smiletest,root,localhost,3,4,QUERY,,'SHOW VARIABLES LIKE \'%audit%\'',0
20190903 09:24:45,smiletest,root,localhost,3,5,QUERY,,'show databases',0
20190903 09:25:12,smiletest,root,localhost,3,0,DISCONNECT,,,0
8.參數說明,都可以通過 set global的方式修改
server_audit_output_type:指定日志輸出類型,可為SYSLOG或FILE
server_audit_logging:啟動或關閉審計
server_audit_events:指定記錄事件的類型,可以用逗號分隔的多個值(connect,query,table),如果開啟了查詢緩存(query cache),查詢直接從查詢緩存返回數據,將沒有table記錄
server_audit_file_path:如server_audit_output_type為FILE,使用該變量設置存儲日志的文件,可以指定目錄,默認存放在數據目錄的server_audit.log文件中
server_audit_file_rotate_size:限制日志文件的大小
server_audit_incl_users:指定哪些用戶的活動將記錄,connect將不受此變量影響,該變量比server_audit_excl_users優先級高
server_audit_excl_users:該列表的用戶行為將不記錄,connect將不受該設置影響
案例
只審計test賬戶其它賬戶不審計
grant all on *.* to test@'172.16.1.%' identified by 'test@123';
flush privileges ;
INSTALL PLUGIN server_audit SONAME 'server_audit.so';
set global server_audit_logging=on;
set global server_audit_file_rotate_size=10000000; 10M
set global server_audit_incl_users='test';
show variables like '%audit%';
下面方式是中斷業務開啟,再次重啟后不會失效:
1.mysql社區版沒有審計插件, 先獲取server_audit.so文件,我是先在一台測試服務器上安裝了一個mariadb數據庫,然后搜索find / -name server_audit.so文件,scp復制出來的,也可以直接去mariadb官網下載一個二進制包找;
2.獲取到server_audit.so包后,把文件cp到mysql插件的路徑下:
cp /tmp/server_audit.so /usr/local/mysql/lib/plugin/
3.編輯my.cnf配置
vim /etc/my.cnf
#開啟審計功能
server_audit_logging=on
#指定審計日志文件存放路徑,這里的路徑要注意了,這個文件路徑必須經是Mysql權限里
server_audit_file_path =/data/mysql/server_audit.log
server_audit_file_rotate_size= 10000000
#防止server_audit 插件被卸載,需要在配置文件中添加
server_audit=FORCE_PLUS_PERMANENT
4.重啟mysql服務
/etc/init.d/mysqld restart
5.查看審計功能是否開啟
mysql> show variables like '%audit%';


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM