mysql的審計日誌 MySQL審計日誌處理指令碼

2021-10-18 23:44:22 字數 2557 閱讀 9260

1、mysql配置檔案

$ cat mysql.cfg

[3306]

ip=***.***.***x.***

user=root

pass=***xx

port=3306

auditlog=/home/mysql/data/mysql-audit.json

socket=/tmp/mysql.sock

2、函式檔案,主要是日誌函式

[mysql@trs bin]$ cat common.sh

#!/bin/sh

logger()a==1&&$1~/'$2'/' $3 |sed 's/ *$//g'|sed 's/^ *//g'

getconfig()

section=$1

confile=$2

#乙個段中的名值對,必須實現把所有的都列出來

endprint="user pass port auditlog ip socket"

dd=`date +'%y%m%d'`

for loop in $endprint

docase $loop in

"user")

#user=`awk -f '=' '/\['$section'\]/a==1&&$1~/'$loop'/' $confile |sed 's/ *$//g'|sed 's/^ *//g'`

user=`getvalue $section $loop $confile`

"pass")

pass=`getvalue $section $loop $confile`

"port")

port=`getvalue $section $loop $confile`

"auditlog")

auditlog=`getvalue $section $loop $confile`

"ip")

host=`getvalue $section $loop $confile`

"socket")

socket=`getvalue $section $loop $confile`

esac

#auditlog=`grep $auditlog config.ini |awk -f '=' ''|sed 's/ *$//g'|sed 's/^ *//g'`

done

logdir=$aud_home/logs/$host:$port

[ ! -d $logdir ] && mkdir -p $logdir

( $aud_home/bin/audit_logrotate.sh $user $pass $auditlog $host $port $socket >>$logdir/$:$_$dd 2>&1 )

bdir=`dirname $0`

cd $bdir >/dev/null

aud_home=`dirname $pwd`

cd - >/dev/null

path=$aud_home/bin:$path

export path aud_home

config=$aud_home/config/mysql.cfg

dd=`date +'%y%m%d'`

#獲取配置檔案中的段名稱,如存在[3306]、[3307],會得到3306和3307

section=`grep "^\[.*\]$" $config|grep -o "[[:digit:]]\" | xargs`

for onecom in $section

dogetconfig $onecom $config

done

#刪除過期的日誌

find $aud_home/mysql_audit/*  -ctime +10 |xargs rm -rf;

find $aud_home/logs  -ctime +10 -exec rm {} \;

4、根據my.cnf的值生成審計日誌

$ cat audit_logrotate.sh

#!/bin/bash

aud_home=$

. $aud_home/bin/common.sh

tt=`date  +%y%m%d%h%m%s`

user=$1

pass=$2

auditlog=$3

host=$4

port=$5

socket=$6

dd=`date +'%y%m%d'`

root=mysql_audit

logserver=172.30.4.104

logrotate():$/$dd

[ ! -d $dir ] && mkdir -p $dir

file=mysql-audit.json$tt

out=$dir/$file

logrotate $user $pass $auditlog $out $socket

logger rotate mysql audit to file $out

( $aud_home/bin/rsynclog.sh $aud_home/$root/$:$ $logserver $root)

mysql審計日誌檔案 MySQL審計日誌處理指令碼

1 mysql配置檔案 cat mysql.cfg 3306 ip x.user root pass xx port 3306 auditlog home mysql data mysql audit.json socket tmp mysql.sock 2 函式檔案,主要是日誌函式 mysql t...

mysql的審計日誌 審計日誌的資料庫設計

一些wiki平台使用的一種方法是分離識別資料和您正在審核的內容。它增加了複雜性,但您最終得到了完整記錄的審計跟蹤,而不僅僅是已編輯的字段列表,您必須將其混搭以便讓使用者了解舊記錄的外觀。例如,如果您有乙個名為opportunities的表來跟蹤銷售交易,您實際上會建立兩個單獨的表 機會opportu...

mysql審計方案 MySQL審計功能

mysql審計功能介紹 之前有同事發現資料丟失,由於mysql自身沒有提供審計功能,查詢binlog可以看到操作時間與連線ip,並不顯示哪個使用者做的操作,詢問開發同事都說沒有做刪除操作,也沒辦法定位操作的人員證據,無奈只能恢復資料。general log會記錄詳細的sql執行記錄,但是生產環境如果...