mysql日志怎么记录 mysql 日志在哪

Linux系统上记录MYSQL操作的审计日志根据笔者上一篇文章—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的慢查询日志记录在日常开发当中,经常会遇到页面打开速度极慢的情况 , 通过排除,确定了,是数据库的影响 , 为了迅速查找具体的SQL,可以通过Mysql的日志记录方法 。
-- 打开sql执行记录功能
set global log_output='TABLE'; -- 输出到表
set global log=ON; -- 打开所有命令执行记录功能general_log, 所有语句: 成功和未成功的.
set global log_slow_queries=ON; -- 打开慢查询sql记录slow_log, 执行成功的: 慢查询语句和未使用索引的语句
set global long_query_time=0.1; -- 慢查询时间限制(秒)
set global log_queries_not_using_indexes=ON; -- 记录未使用索引的sql语句
-- 查询sql执行记录
select * from mysql.slow_log order by 1; -- 执行成功的:慢查询语句,和未使用索引的语句
select * from mysql.general_log order by 1; -- 所有语句: 成功和未成功的.
-- 关闭sql执行记录
set global log=OFF;
set global log_slow_queries=OFF;
-- long_query_time参数说明
-- v4.0, 4.1, 5.0, v5.1 到 5.1.20(包括):不支持毫秒级别的慢查询分析(支持精度为1-10秒);
-- 5.1.21及以后版本 :支持毫秒级别的慢查询分析, 如0.1;
-- 6.0 到 6.0.3: 不支持毫秒级别的慢查询分析(支持精度为1-10秒);
-- 6.0.4及以后:支持毫秒级别的慢查询分析;
通过日志中记录的Sql,迅速定位到具体的文件,优化sql看一下,是否速度提升了呢?
linux 下怎么查看 mysql 查看慢查询日志记录shellmysql -u root -p
#输入密码
mysqlshow variables like "%slow%";
#检查下面几条参数
slow_query_log #这个是表示的slow log有没开
slow_query_log_file #这个是slow log的地址
#然后直接vim 那个文件就可以了
如何查看mysql数据库操作记录日志?有时候我们会不小心对一个大表进行了 update,比如说写错了 where 条件......
此时 , 如果 kill 掉 update 线程,那回滚 undo log 需要不少时间 。如果放置不管,也不知道 update 会持续多久 。
那我们能知道 update 的进度么mysql日志怎么记录?

推荐阅读