Mysql audit插件安裝
Mysql audit插件可以記錄用戶及應用對數據庫的每一個操作,讓我們在需要的時候可以很方便的查看相關審計日志,排查哪個用戶在哪個事件端進行了什么操作。在默認情況下會記錄任何語句,有語法錯誤的不會記錄
插件安裝
插件下載
地址:https://github.com/mcafee/mysql-audit/releases 選擇對應版本數據庫下載即可
解壓安裝
# unzip audit-plugin-mysql-5.7-1.1.7-913-linux-x86_64.zip Archive: audit-plugin-mysql-5.7-1.1.7-913-linux-x86_64.zip creating: audit-plugin-mysql-5.7-1.1.7-913/ creating: audit-plugin-mysql-5.7-1.1.7-913/lib/ inflating: audit-plugin-mysql-5.7-1.1.7-913/lib/libaudit_plugin.so inflating: audit-plugin-mysql-5.7-1.1.7-913/COPYING inflating: audit-plugin-mysql-5.7-1.1.7-913/THIRDPARTY.txt inflating: audit-plugin-mysql-5.7-1.1.7-913/README.txt inflating: audit-plugin-mysql-5.7-1.1.7-913/plugin-name.txt creating: audit-plugin-mysql-5.7-1.1.7-913/utils/
查看Mysq插件目錄
mysql> show variables like 'plugin_dir'; +---------------+--------------------------+ | Variable_name | Value | +---------------+--------------------------+ | plugin_dir | /usr/lib64/mysql/plugin/ | +---------------+--------------------------+ 1 row in set (0.00 sec)
復制庫文件到mysql插件目錄下
cd audit-plugin-mysql-5.7-1.1.7-913/lib/libaudit_plugin.so /usr/lib64/mysql/plugin/ chmod +x /usr/lib64/mysql/plugin/libaudit_plugin.so
進入mysql命令行,安裝插件
> install plugin audit soname 'libaudit_plugin.so'; Query OK, 0 rows affected (0.06 sec)
查看版本
mysql> show global status like '%audit%'; +------------------------+-----------+ | Variable_name | Value | +------------------------+-----------+ | Audit_protocol_version | 1.0 | | Audit_version | 1.1.7-913 | +------------------------+-----------+
開啟Audit功能
> SET GLOBAL audit_json_file=ON; Query OK, 0 rows affected (0.00 sec)
其他參數:
1. audit_json_file 是否開啟audit功能。 2. audit_json_log_file 記錄文件的路徑和名稱信息(默認放在mysql數據目錄下)。 3. audit_record_cmds audit記錄的命令,默認為記錄所有命令。可以設置為任意dml、dcl、ddl的組合。如:audit_record_cmds=select,insert,delete,update。還可以在線設置set global audit_record_cmds=NULL。(表示記錄所有命令)
audit日志分割
日志使用logrotate工具定時來分割
1、添加配置信息
cat /etc/logrotate.d/audit /var/lib/mysql/mysql-audit.json { create 600 mysql mysql notifempty daily rotate 3000 missingok minsize 200M compress postrotate # just if mysqld is really running if test -x /usr/bin/mysqladmin && \ /usr/bin/mysqladmin ping -uroot -pxxxxxxxxxx &>/dev/null then echo "test" /bin/mysql -e "set global audit_json_file_flush=on" -uroot -pxxxxxxxxxx fi endscript }
2、添加定時任務分割
*/5 * * * * /usr/sbin/logrotate -f /etc/logrotate.d/audit
3、定時講備份的日志轉移到備份目錄
cat /opt/move_mysqlaudit_log.sh #!/bin/bash Yesterday=`date +%Y-%m-%d -d "1 days ago"` BACKUP_DIR=/data/backup/mysql_audit [[ ! -e ${BACKUP_DIR}/${Yesterday} ]] && mkdir ${BACKUP_DIR}/${Yesterday} find /var/lib/mysql/ -name mysql-audit.json.*.gz -exec mv {} ${BACKUP_DIR}/${Yesterday} \;