在 CentOS 上 MySQL 无法连接 是很常见的问题,原因通常集中在 服务状态、网络、防火墙、用户权限、配置 这几类。下面按最常见原因 → 排查方法 → 解决方式给你一个系统清单。
systemctl status mysqld
# 或
systemctl status mariadb
systemctl start mysqld
systemctl enable mysqld
netstat -lntp | grep 3306
# 或
ss -lntp | grep 3306
如果看到:
127.0.0.1:3306
说明 只允许本机连接
vi /etc/my.cnf
注释或改为:
# bind-address = 127.0.0.1
bind-address = 0.0.0.0
重启:
systemctl restart mysqld
firewall-cmd --list-all
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
setenforce 0
如果能连了,说明是 SELinux 问题。
setsebool -P mysql_connect_any 1
mysql -u root -p
SELECT user, host FROM mysql.user;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码';
FLUSH PRIVILEGES;
⚠️ 生产环境不建议 root 远程登录
mysql -u root -p
mysql -h IP -u user -p
错误信息很关键,例如:
Access denied → 权限问题Connection refused → 服务/防火墙Can't connect to MySQL server → 服务未监听或网络不通| 错误信息 | 可能原因 |
|---|---|
| Connection refused | 服务没起 / 防火墙 |
| Access denied | 用户权限 |
| Timeout | 网络 / SELinux |
| Unknown MySQL server | IP 或端口错 |
如果你愿意,可以把下面信息发我:
cat /etc/redhat-release)我可以直接帮你一步到位解决。