共享Cpanel主机连接自建Cpanel服务器MySQL遭拒绝求助
嘿,我之前也遇到过几乎一模一样的问题,给你梳理几个关键的排查点,应该能解决这个mysqli_connect(): (HY000/2002): Connection refused的错误:
1. 确认MySQL服务是否监听公网IP
自建cPanel服务器上的MySQL默认可能只绑定了127.0.0.1(仅允许本地连接),这是很多人踩的坑。你可以这么检查:
- 登录WHM,找到
SQL Services下的MySQL Configuration - 查找
bind-address参数,确保它设置为服务器的公网IP,或者0.0.0.0(允许所有IP发起连接) - 修改完成后,记得重启MySQL服务(在WHM的
Restart Services->MySQL Server里操作)
2. 检查服务器防火墙(别漏了CSF)
虽然你说3306端口开放,但cPanel服务器标配的CSF防火墙可能没放行共享主机的IP:
- 登录WHM的
ConfigServer Security & Firewall - 进入
Firewall Allow IPs,把共享主机的IP添加进去 - 重启CSF防火墙(点击
Restart csf+lfd按钮) - 另外也可以用服务器终端命令验证系统防火墙规则:
sudo iptables -L -n | grep 3306,看看是否有允许对应IP访问3306的条目
3. 验证MySQL用户的远程访问权限
有时候cPanel的Remote MySQL设置只是“放行IP”,但数据库用户本身可能没有远程访问权限:
- 登录自建服务器的phpMyAdmin,找到对应的数据库用户
- 查看用户的
Host字段,确保它是共享主机的IP,或者%(允许所有主机连接) - 如果需要修改,直接编辑用户的Host权限,然后执行
FLUSH PRIVILEGES;刷新权限
4. 测试基础网络连通性
先排除网络层面的问题:
- 如果共享主机有SSH权限,登录终端后执行
telnet 195.201.XXX.XXX 3306或者nc -zv 195.201.XXX.XXX 3306 - 如果这些命令都提示连接失败,那大概率是共享主机的出站防火墙限制了3306端口,这时候得联系共享主机的客服确认是否允许出站访问外部MySQL端口
5. 核对连接代码的细节
再仔细检查你的PHP连接代码:
$SERVER_NAME = "195.201.XXX.XXX"; $DB_USER = "your_cpanel_prefix_dbuser"; // 注意cPanel用户的数据库用户名带前缀,比如khushi_myuser $DB_PASS = "your_db_password"; $DB_NAME = "your_db_name"; $conn = mysqli_connect($SERVER_NAME, $DB_USER, $DB_PASS, $DB_NAME);
确保IP、用户名、密码都没有拼写错误,尤其是用户名的cPanel前缀很容易被忽略。
如果以上步骤都试过还是不行,建议查看自建服务器的MySQL错误日志(WHM里SQL Services->MySQL Server Log),里面会记录更详细的拒绝原因,比如权限验证失败、连接被防火墙拦截等信息,能帮你更快定位问题。
内容的提问来源于stack exchange,提问作者Khushi Patel
相关产品推荐
相关产品推荐

