PHP MySQLi在外部连接时出错,但可以从其他来源连接

时间:2017-11-15 18:00:38

标签: php mysql mysqli

我正在将服务器从共享托管服务器迁移到VPS。作为转换的一部分,我希望在我完全切换站点和DNS记录之前,让当前正在运行的站点开始使用新服务器上的数据库。

新服务器已启动并运行mysql,我可以从服务器连接本地,并且可以使用我的iMac上的Sequal Pro应用程序作为外部连接进行连接。当我使用相同的细节在我的PHP脚本中连接虽然在共享主机服务器上我得到(2002) Connection refusedDB: 0错误。

PHP脚本看起来像

$servername = "SERVERIP";
$usernamedb = "USERNAME";
$passworddb = "PASSWORD";
$dbname = "DBNAME";

$conn = new mysqli($servername, $usernamedb, $passworddb, $dbname, 3306);

if ($conn->connect_errno) {
    echo "Failed to connect to MySQL: (" . $conn->connect_errno . ") " . $conn->connect_error;
}

我已经检查了/var/log/mysql/error.log,并且没有记录任何问题。它必须是PHP连接而不是VPS / MySQL端,因为我可以使用Sequal Pro从我的家庭互联网连接没有问题,因此服务器绝对允许使用这些用户名,密码和数据库名称详细信息从外部源连接

我在new mysqli语句中添加了端口号,以防共享主机的默认设置不同,但无论是否有所不同都会产生影响。

1 个答案:

答案 0 :(得分:1)

从评论中,我们知道它从客户端盒子上的命令行失败,但是从您的个人盒子上的命令行(GUI,技术上)开始工作。我们从这些评论中也知道它不是SELinux或IPTables。因此,它必须是:

  • SELinux或IPTables以外的客户端盒上的系统/操作系统级别设置,或
  • 客户端盒与服务器之间的路由器/防火墙。

打破较低级别(例如IP)工具的时间。或者,如您所发现的,请联系上游网络管理员。

用某名着名侦探的话说:

  

一旦你消除了不可能的事物,无论剩下什么,无论多么不可能,都必须是真理。