PHP MySQLi提供外部连接错误,但可以从其他来源连接
我正在将服务器从共享主机服务器迁移到VPS。作为转换的一部分,我希望在我完全切换站点和DNS记录之前,让当前正在运行的站点开始使用新服务器上的数据库 新服务器已启动并运行mysql,我可以从服务器连接本地和本地,也可以使用iMac上的Sequal Pro应用程序作为外部连接进行连接。当我在PHP脚本中使用相同的细节进行连接时,尽管在共享托管服务器上,我得到了一个PHP MySQLi提供外部连接错误,但可以从其他来源连接,php,mysql,mysqli,Php,Mysql,Mysqli,我正在将服务器从共享主机服务器迁移到VPS。作为转换的一部分,我希望在我完全切换站点和DNS记录之前,让当前正在运行的站点开始使用新服务器上的数据库 新服务器已启动并运行mysql,我可以从服务器连接本地和本地,也可以使用iMac上的Sequal Pro应用程序作为外部连接进行连接。当我在PHP脚本中使用相同的细节进行连接时,尽管在共享托管服务器上,我得到了一个(2002)Connection refureddb:0错误 PHP脚本看起来像 $servername = "SERVERIP"; $
(2002)Connection refureddb: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从我的家庭互联网连接进行连接,而不会出现问题,因此服务器明确允许使用这些用户名、密码和数据库名称详细信息从外部源进行连接
我将端口号添加到
新的mysqli
语句中,以防共享主机的默认设置有所不同,但使用或不使用端口号都没有区别。从注释中,我们知道它在客户端框上的命令行失败,但在个人框上的命令行(GUI,技术上)起作用。我们还从这些评论中知道,它不是SELinux或IPTables。因此,它必须是:
- 除SELinux或IPTables之外的客户端上的系统/操作系统级别设置,或
- 客户端和服务器之间的路由器/防火墙
您是否正在运行SELinux(请尝试
sestatus
)?如果是这样,还可以尝试sudo setemforce 0
暂时禁用强制。尝试使用shell命令行mysql从共享主机连接到VPS数据库。这样有时会得到更好的错误消息。这也测试了混合中没有PHP的情况。您是否已经将my.cnf中的bind address参数设置为0.0.0。0@YouneL是 啊正如我所说,外部连接似乎不是问题,因为我可以从家庭网络连接到VPS,我只是无法从共享主机连接。@我与共享主机提供商联系,他们似乎在路由器级别阻止了连接。他们已经解除了它的封锁,现在它可以工作了。你想把它变成一个答案(检查安全+检查主机),我可以标记它正确吗?