Linux系统上记录MYSQL操作的审计⽇志
根据笔者上⼀篇⽂章—Linux系统上记录⽤户操作的审计⽇志 。本⽂来利⽤相同的⽅法记录MYSQL操作的审计⽇志。
使⽤⽤mysql⼯具连接MySQL server的所有操作会默认记录到~/.mysql_history⽂件中,这个⽂件会把所有操作记录下来,包括创建⽤户和修改⽤户的明⽂密码,这在⽣产系统上是不安全的。如果不想保存,仅仅删除是不⾏的(⽂件不存在会再建⽴),要直接将其软连接到垃圾箱。
ln  -s  /dev/null  ~/.mysql_history
ln  -s  /dev/null  ~/.mysql_history
利⽤上⼀篇⽂章相同的⽅法记录MYSQL操作的审计⽇志,是因为mysql⼯具本⾝就是有⼀个shell, 每次mysql连接退出后,都会把此次操作的信息记录到~/.mysql_history⽂件中。那么可以重新定义MYSQL_HISTFILE环境变量来保存mysql⽇志。
先看置于/etc/profile.d⽬录下的环境变量的脚本mysql_history.sh,和loginlog类似。
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
if [ ! -d /opt/mysqllog ]
then
mkdir -p /opt/mysqllog
chmod 777 /opt/mysqllog
fi
if [ ! -d /opt/mysqllog/${LOGNAME} ]
then
mkdir /opt/mysqllog/${LOGNAME}
chmod 300 /opt/mysqllog/${LOGNAME}
fi
DT=`date "+%Y-%m-%d_%H:%M:%S"`
export MYSQL_HISTFILE="/opt/mysqllog/${LOGNAME}/${USER_IP}_mysqllog.$DT.log"
chmod 600 /opt/mysqllog/${LOGNAME}/*mysqllog* 2>/dev/null
在测试时,发现平时使⽤的普通⽤户在操作mysql后⽆法记录,⽽root⽤户(平时没有操作过mysql)可以记录成功。后来在在
~/.mysql_history⽂件到了操作记录,估计是这个⽂件还存在的原因,删除后才记录到新的MYSQL_HISTFILE定义的路径。
在linux中下载mysql时冲突是什么
和loginlog⼀样,需要定期删除过期⽇志,以下脚本置于/etc/cron.weekly ⽬录下。
delete_time=15
find /opt/mysqllog/  -mtime +$delete_time -name '*.log' -exec rm -r {} \;
但是相⽐于loginlog,mysqllog有两点暂时没有解决。
1、定义最⼤的记录条数history.maxSize不知在哪定义,myf?
2、每⼀条命令的时间记录添加。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。