linux开启mysql日志的简单介绍

发布时间:2022-11-10

本文目录一览:

  1. linux里mysql日志在哪
  2. Linux系统上记录MYSQL操作的审计日志
  3. linux mysql 开启查询日志的问题
  4. linux中的MySQL开启二进制日志?

linux里mysql日志在哪

首先登陆:

mysql -u root -p

然后查看是否启用了日志:

mysql show variables like 'log_%';

查看当前的日志:

mysql show master status;

你需要知道的 MySQL 日志类型:

  • 错误日志:-log-err
  • 查询日志:-log
  • 慢查询日志:-log-slow-queries
  • 更新日志:-log-update
  • 二进制日志:-log-bin 修改配置(以下为日志文件保存位置):
[mysqld]
log=/var/log/mysqld_common.log
log-error=/var/log/mysqld_err.log
log-bin=/var/log/mysqld_bin.bin

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

但是相比于 loginlogmysqllog 有两点暂时没有解决:

  1. 定义最大的记录条数 history.maxSize 不知在哪定义,my.cnf?
  2. 每一条命令的时间记录添加。

linux mysql 开启查询日志的问题

是否启用了日志:

mysql show variables like 'log_%';

查看当前的日志:

mysql show master status;

首先你得知道 MySQL 的日志类型:

  • 错误日志:-log-err
  • 查询日志:-log
  • 慢查询日志:-log-slow-queries
  • 更新日志:-log-update
  • 二进制日志:-log-bin 修改配置(我们常用的配置):
[mysqld]
log=/var/log/mysqld_common.log
log-error=/var/log/mysqld_err.log
log-bin=/var/log/mysqld_bin.bin

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