linuxmysql日志在哪
根据笔者上一篇文章—Linux系统上记录用户操作的审计日志 。本文来利用相同的方法记录MYSQL操作的审计日志。
使用用mysql工具连接MySQL server的所有操作会默认记录到~/.mysql_history文件中,这个文件会把所有操作记录下来,包括创建用户和修改用户的明文密码,这在生产系统上是不安全的。如果不想保存,仅仅删除是不行的(文件不存在会再建立),要直接将其软连接到垃圾箱。
ln -s /dev/null ~/.mysql_history
利用上一篇文章相同的方法记录MYSQL操作的审计日志,是因为mysql工具本身就是有一个shell, 每次mysql连接退出后,都会把此次操作的信息记录到~/.mysql_history文件中。那么可以重新定义MYSQL_HISTFILE环境变量来保存mysql日志。
先看置于/etc/profile.d目录下的环境变量的脚本mysql_history.sh,和loginlog类似。
在测试时,发现平时使用的普通用户在操作mysql后无法记录,而root用户(平时没有操作过mysql)可以记录成功。后来在在~/.mysql_history文件找到了操作记录,估计是这个文件还存在的原因,删除后才记录到新的MYSQL_HISTFILE定义的路径。
和loginlog一样,需要定期删除过期日志,以下脚本置于/etc/cron.weekly 目录下。
delete_time=15
find /opt/mysqllog/ -mtime +$delete_time -name '*.log' -exec rm -r {} \;
但是相比于loginlog,mysqllog有两点暂时没有解决。
1、定义最大的记录条数history.maxSize不知在哪定义,my.cnf?
2、每一条命令的时间记录添加。
② 如何查看mysql运行,访问记录等日志
mysql有以下几种日志:
错误日志: -log-err
查询日志: -log
慢查询日志: -log-slow-queries
更新日志: -log-update
二进制日志: -log-bin
是否启用了日志
mysql>showvariableslike'log_%';
怎样知道当前的日志
mysql>showmasterstatus;
显示二进制日志数目
mysql>showmasterlogs;
看二进制日志文件用mysqlbinlog
shell>mysqlbinlogmail-bin.000001
或者
shell>mysqlbinlogmail-bin.000001|tail
在配置文件中指定log的输出位置.
Windows:Windows 的配置文件为 my.ini,一般在MySQL的安装目录下或者 c:Windows 下。
Linux:Linux 的配置文件为 my.cnf ,一般在 /etc 下。
windows下
#在[mysqld]中输入
#log
log-error="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/error.log"
log="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/mysql.log"
long_query_time=2
log-slow-queries="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/slowquery.log"
Linux下
#在[mysqld]中输入
#log
log-error=/usr/local/mysql/log/error.log
log=/usr/local/mysql/log/mysql.log
long_query_time=2
log-slow-queries=/usr/local/mysql/log/slowquery.log
③ linux版mysql安装后mysql的日志文件找不到
这个要看安装mysql的配置,默认安装及日志文件如下:
mysql安装
yum -y install mysql mysql-server mysql-devel
chkconfig --level 35 mysqld on
/etc/init.d/mysqld start
④ linux中的MySQL开启二进制日志
二进制日志开启方法:
查看系统变量log_bin,如果其值为OFF,表示没有开启二进制日志(binary log),如果需要开启二进制日志
修改my.cnf,在[mysqld]下面增加
log-bin=/data/mysqldb/log/mysql-bin.log
binlog_format = ROW
expire_logs_days=15
server_id = 2
修改完之后重启MySQL,然后再查看show variables like 'log_bin%'; 这个时候你会发现log_bin的value值变成了ON
⑤ linux怎么查询mysql操作日志
mysql -u root -p //以root账户登陆之后 use mysql; select User from user;
⑥ linux怎么查看mysql的binlog日志存放的位置
这个你可以看配置文件 启用了才有这样的记录默认是没有的
/etc/my.conf
log-bin = mysqlbin
一般放在/var/lib/mysql
比如上面的设置重启数据库会生成mysqlbin.000001文件