我正在将服务器从共享托管服务器迁移到 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/