温馨提示×

如何排查debian mysql报错

小樊
49
2026-09-07 21:44:15
栏目: 云计算

在 Debian 上排查 MySQL(通常是 MySQLMariaDB)报错,建议按下面顺序一步步来,从“看现象 → 看日志 → 看配置 → 看资源 → 看权限”系统排查。


一、先确认 MySQL 是否在运行

systemctl status mysql
# 或(MariaDB)
systemctl status mariadb

常见状态:

  • active (running):服务在跑
  • failed:启动失败(重点看日志)
  • inactive:没启动

尝试启动:

sudo systemctl start mysql

二、查看 MySQL 错误日志(最重要)

1️⃣ 找到日志位置

mysql -e "SHOW VARIABLES LIKE 'log_error';"

或查看配置文件:

sudo grep -R "log_error" /etc/mysql/

常见路径:

  • /var/log/mysql/error.log
  • /var/log/mysqld.log

2️⃣ 实时查看日志

sudo tail -f /var/log/mysql/error.log

重点看:

  • Can't start server
  • Permission denied
  • Table './xxx' is marked as crashed
  • Out of memory
  • InnoDB: ...

三、客户端连接报错排查

常见错误 & 解决

ERROR 2002 (HY000): Can't connect to local MySQL server

原因:

  • MySQL 没启动
  • socket 文件不存在

检查:

ls -l /var/run/mysqld/mysqld.sock

修复:

sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld
sudo systemctl restart mysql

ERROR 1045 (28000): Access denied

原因:

  • 用户名/密码错
  • 权限不对

排查:

mysql -u root -p

重置 root 密码(忘记密码时):

sudo systemctl stop mysql
sudo mysqld_safe --skip-grant-tables &
mysql
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';

ERROR 1130: Host 'x' is not allowed

原因:

  • 远程连接未授权

解决:

GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;

并确保:

bind-address = 0.0.0.0

四、配置文件检查

主配置文件:

/etc/mysql/my.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf

常见错误:

  • 配置写错导致无法启动
  • datadir 权限不对

检查数据目录权限:

ls -ld /var/lib/mysql

应为:

drwx------ mysql mysql

五、磁盘 / 内存问题

磁盘满了

df -h

内存不足

free -m

InnoDB 常见报错:

InnoDB: Cannot allocate memory for the buffer pool

解决:

  • 调小 innodb_buffer_pool_size
  • 加 swap

六、表损坏修复(MyISAM)

myisamchk -r /var/lib/mysql/db/table.MYI

或:

REPAIR TABLE tablename;

七、安全模式启动(排错用)

sudo mysqld --safe-mode

或:

sudo mysqld --skip-grant-tables

八、快速排查清单(总结)

✅ 服务状态
✅ 错误日志
✅ 配置文件
✅ 权限(mysql 用户)
✅ 磁盘 / 内存
✅ 防火墙 / 端口


如果你能贴出具体报错信息(命令行报错 or 日志内容),我可以直接帮你定位是哪一类问题。

0