You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

共享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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:33:40