温馨提示×

centos为何连不上mysql

小樊
46
2026-10-20 07:06:30
栏目: 云计算

在 CentOS 上连不上 MySQL,原因有很多种,最常见的可以按下面几类来排查。你可以对照看看属于哪一种。


一、MySQL 服务本身没启动

现象:ERROR 2002 (HY000): Can't connect to local MySQL server through socket

检查服务状态:

systemctl status mysqld
# 或
systemctl status mariadb

如果没启动:

systemctl start mysqld
systemctl enable mysqld

二、连接方式和 socket 有关(本地连接)

1. 用 mysql -u root 连不上

可能是:

  • 使用了 socket 方式,但 socket 文件路径不对
  • MySQL 数据目录初始化失败

查看 socket 位置:

grep socket /etc/my.cnf

一般:

socket=/var/lib/mysql/mysql.sock

如果文件不存在,说明服务没正常启动。


三、远程连接连不上(最常见)

现象:ERROR 2003 (HY000): Can't connect to MySQL server on 'IP' (113)

1. MySQL 只允许本机

默认 MySQL 只监听 127.0.0.1

检查:

netstat -lntp | grep 3306

如果是:

127.0.0.1:3306

说明不允许远程

修改 /etc/my.cnf:

bind-address=0.0.0.0

然后重启:

systemctl restart mysqld

2. 用户没有远程权限

即使端口通了,也可能被拒绝:

SELECT host FROM mysql.user WHERE user='root';

如果只有 localhost,需要授权:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码';
FLUSH PRIVILEGES;

3. 防火墙没放行 3306

CentOS 7+:

firewall-cmd --list-ports
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload

或临时关闭测试:

systemctl stop firewalld

4. SELinux 拦截(很多人忽略)

临时关闭测试:

setenforce 0

如果这样能连,说明是 SELinux 问题。


四、密码 / 权限错误

现象:ERROR 1045 (28000): Access denied

  • 密码错
  • 用户不存在
  • 主机限制(localhost ≠ 192.168.x.x)

五、端口被占用或修改

确认:

grep port /etc/my.cnf

客户端连接时指定:

mysql -h IP -P 端口 -u 用户 -p

六、快速排查清单 ✅

  1. 服务是否启动 ✅
  2. 端口是否监听 ✅
  3. 防火墙是否放行 ✅
  4. SELinux 是否拦截 ✅
  5. 用户是否允许远程 ✅
  6. 密码是否正确 ✅

如果你愿意,可以把具体报错信息贴出来(比如 ERROR 2003、2002、1045),我可以直接帮你定位是哪一步的问题。

0 踩