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

标签 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 语句中,以防共享主机具有不同的默认设置,但无论有无它都没有区别。

最佳答案

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

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

是时候推出较低级别(例如 IP)工具了。或者,如您所见,联系上游网络管理员。

某名侦探的话:

Once you eliminate the impossible, whatever remains, no matter how improbable, must be the truth.

关于PHP MySQLi 在外部连接时出错,但可以从其他来源连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47314319/

相关文章:

php - 使用 laravel 5.1 在实时服务器中发送电子邮件时遇到问题

php - 在 WooCommerce 中替换 "Coupon code applied successfully."消息

php - PHP 登录尝试失败后返回

php - 试图获取非对象的属性

php - 我可以在 PHP 中混合使用 MySQL API 吗?

php - Codeigniter:使用事件记录插入带有外键的行

PHP7 MySQL 'expiry_date' PDO 数据库安装的默认值无效

mysql运行计划事件返回: Query is empty

php - 工作两年后突然出现 MYSQL "Malformed packet"on LOAD DATA LOCAL INFILE

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?