Mysql audit插件安裝及日志分割


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} \;

 


免責聲明!

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



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