在linux系统中部署和运行mysql数据库时,错误日志是记录服务启动、运行、关闭过程中所有异常信息的核心文件,当遇到mysql无法启动、连接失败、查询报错等问题时,查看错误日志是最高效的排查方式。不同安装方式、不同版本的mysql,错误日志的存储位置和查看方式存在一定差异,下面逐一介绍常见的方法。

通过mysql配置文件定位错误日志路径
mysql的错误日志路径通常会在配置文件中明确指定,优先查看配置文件是最准确的方式。mysql的配置文件常见路径有/etc/my.cnf、/etc/mysql/my.cnf、~/.my.cnf,不同安装方式对应的配置文件路径可能不同。
可以通过grep命令直接在配置文件中搜索错误日志相关的配置项:
# 搜索my.cnf中的错误日志配置 grep -r "log_error" /etc/my.cnf /etc/mysql/ # 如果上述路径没找到,可以搜索所有常见配置文件 grep -r "log_error" /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 2>/dev/null
执行后会输出类似log_error = /var/log/mysql/error.log的内容,等号后面的路径就是错误日志的实际存储位置。
查看默认安装路径下的错误日志
如果没有在配置文件中找到log_error配置项,mysql会使用默认的错误日志路径,不同安装方式的默认路径如下:
| 安装方式 | 默认错误日志路径 |
|---|---|
| 系统包管理器安装(apt/yum) | /var/log/mysql/error.log |
| 二进制包安装 | $MYSQL_HOME/data/主机名.err |
| 源码编译安装 | $MYSQL_HOME/data/主机名.err |
其中$MYSQL_HOME是mysql的安装目录,可以通过which mysql命令先找到mysql可执行文件路径,再向上推导安装目录。
通过mysql命令查看错误日志路径
如果mysql服务处于运行状态,也可以直接登录mysql客户端,执行SQL语句查询错误日志的路径:
-- 登录mysql客户端后执行 SHOW VARIABLES LIKE 'log_error';
执行后会返回类似如下结果,Value字段就是错误日志的完整路径:
+---------------+-----------------------------------+ | Variable_name | Value | +---------------+-----------------------------------+ | log_error | /var/log/mysql/error.log | +---------------+-----------------------------------+
查看错误日志的常用命令
定位到错误日志路径后,可以根据需求使用不同的命令查看内容:
查看完整日志
# 使用cat查看完整日志,适合日志文件较小的情况 cat /var/log/mysql/error.log # 使用less分页查看,适合日志文件较大的情况 less /var/log/mysql/error.log
查看最新日志内容
# 查看日志最后100行内容 tail -n 100 /var/log/mysql/error.log # 实时跟踪日志新增内容 tail -f /var/log/mysql/error.log
检索关键错误信息
# 搜索日志中包含error的行 grep "error" /var/log/mysql/error.log # 搜索不区分大小写的错误相关行 grep -i "error|fail|exception" /var/log/mysql/error.log
注意事项
- 查看错误日志需要有对应的文件读取权限,普通用户如果没有权限可以使用sudo命令提权后查看。
- 如果错误日志路径不存在,可能是mysql服务还没有生成错误日志,或者配置的路径目录没有写入权限,需要检查目录权限。
- 部分自定义安装的mysql可能会将错误日志存储在数据目录下,文件名通常是
主机名.err的格式。