php连接mysql报错connection refused通常是因为目标主机拒绝了tcp连接,最常见的原因是mysql服务未启动、监听地址配置为仅本地或防火墙拦截了端口。请检查mysql进程是否运行,确认配置文件中的bind-address设置,并确保服务器防火墙允许3306端口的入站流量。

如何验证MySQL服务是否在监听
首先确认MySQL守护进程正在运行且监听了预期的端口。在Linux服务器上执行netstat或ss命令查看3306端口状态,若显示LISTEN则服务正常;若未监听,需启动mysqld服务并检查错误日志。

systemctl status mysql ss -tlnp | grep 3306
如何排查防火墙与网络限制
如果服务已监听但仍被拒绝,检查iptables、firewalld或云服务商的安全组规则。确保源IP地址被允许访问目标主机的3306端口。对于远程连接,还需确认MySQL用户权限是否允许该IP登录。
安装、修复、更新或打包一个基于 Python 和 PyMySQL 实现的 Windows `mysql` 命令。适用于用户希望在 PowerShell/CMD 中输入 `mysql` 时重定向到 Python 实现、需要交互式输入 MySQL 连接信息、需要同步到当前用户本地 bin 目录,或需要将该能力封装成可公开复用的 Codex skill。
立即学习“PHP免费学习笔记(深入)”;

sudo iptables -L -n | grep 3306 sudo firewall-cmd --list-ports
基于bind-address配置的具体问题
当MySQL配置文件中bind-address设置为127.0.0.1时,它只接受来自本机的连接。若PHP脚本运行在另一台服务器,必须将bind-address改为0.0.0.0或具体内网IP,并重启MySQL服务以生效。


















