MySQL连接失败需按“服务→端口→权限→网络”顺序排查:先确认mysqld服务运行,再检查bind-address和端口监听,接着验证用户host权限,最后排查防火墙及安全组是否放行3306端口。

MySQL连接失败通常不是单一原因导致的,而是网络、配置、权限、服务状态等多环节中某一处出了问题。排查时建议从最基础的服务是否运行开始,逐步向上验证。
检查MySQL服务是否正在运行
服务未启动是最常见的连接失败原因。在Linux上执行 systemctl status mysqld(或 mysql,取决于发行版和安装方式),确认状态为“active (running)”。若已停止,用 systemctl start mysqld 启动。Windows用户可在“服务”管理器中查找“MySQL”或“MySQL80”,确认其状态为“正在运行”。
确认监听地址与端口是否正确
MySQL默认监听 127.0.0.1:3306,这意味着只接受本地回环连接。如果从远程机器连接,需检查:
- 配置文件(如 /etc/my.cnf 或 my.ini)中 bind-address 是否设为 0.0.0.0(允许所有IP)或指定IP;
- port 参数是否被修改(如改成3307),客户端连接时需同步调整;
- 使用 netstat -tuln | grep :3306(Linux)或 netstat -ano | findstr :3306(Windows)确认端口确实在监听。
验证用户名、密码及主机权限
即使账号密码正确,也可能因主机限制无法登录。例如创建用户时用了 CREATE USER 'user'@'localhost',那该用户就无法从其他IP(包括127.0.0.1,因MySQL视其与localhost为不同主机)连接。解决方法:
- 登录MySQL后执行 SELECT host, user FROM mysql.user; 查看用户允许的host;
- 如需远程访问,可授权: GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;;
- 注意:生产环境慎用 @'%',应限定具体IP段。
检查防火墙与网络连通性
即使服务运行且监听正确,中间网络设备可能拦截连接:
- Linux服务器上检查iptables/firewalld是否放行3306端口(如 firewall-cmd --list-ports);
- Windows防火墙需添加入站规则允许TCP 3306;
- 远程连接前,先用 telnet server_ip 3306 或 nc -zv server_ip 3306 测试端口是否可达;
- 云服务器(如阿里云、腾讯云)还需检查安全组策略是否开放对应端口。
不复杂但容易忽略。定位时按“服务→端口→权限→网络”顺序推进,多数连接问题都能快速解决。










