【问题标题】:mysqli connection error across servers using php使用php跨服务器的mysqli连接错误
【发布时间】:2014-01-11 16:58:47
【问题描述】:

我正在尝试使用 PHP 连接连接到另一台服务器上的 MySQL 数据库。我收到以下错误,无法弄清楚。

这是我包含端口时的错误:

警告:mysqli_connect() [function.mysqli-connect]: (HY000/2005): 未知的 MySQL 服务器主机 'xxxxxx.db.0000095.hostedresource.com:3306' (25) 在 /home/xxxxxx/public_html/tools/include/db_connect.php 上线 3 连接MySQL失败:未知的MySQL服务器主机 'xxxxxxxx.db.0000095.hostedresource.com:3306' (25)


这是我不使用端口时的错误:

警告:mysqli_connect() [function.mysqli-connect]: (HY000/2003): 未知的 MySQL 服务器主机 'xxxxxx.db.0000095.hostedresource.com' (110) 在 /home/xxxxxx/public_html/tools/include/db_connect.php 上线 3 连接MySQL失败:未知的MySQL服务器主机 'xxxxxxxx.db.0000095.hostedresource.com' (110)


这是我的 db_connect 文件:
<?
$con=mysqli_connect("xxxxxx.db.0000095.hostedresource.com","xxcorrectxx","xxcorrectxx",
"xxcorrectxx");

if (mysqli_connect_errno())
{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>


这是我拥有包含文件的服务器上可能存在的防火墙问题吗? 这个 db 连接文件在我拥有的其他域上运行良好。 请告诉我您是否可以找到解决此问题的方法。谢谢你。

【问题讨论】:

  • 我认为你的 MySQL 主机中的 xxxxxx 部分需要替换为实际值。
  • 你连接的web服务器from是否有权限连接到目标sql数据库服务器?您是否为主机创建了带有% 的数据库用户?
  • @AmalMurali GoDaddy 共享主机会删除敏感/已解析的主机名/用户信息。
  • xxxxxx 只是我用来屏蔽我的实际数据库名称的值。我那里有正确的信息。
  • Lathesan,不确定您的意思。我在一个站点上使用这个完全相同的代码,一切都很好。我没有更改 mysql 服务器所在站点的权限。当我将文件放在另一台主机上时,它没有连接。

标签: php mysql mysqli


【解决方案1】:

流量可能被防火墙阻止了。

通常 MySQL 端口不向公众开放;它仅适用于本地网络。此外,DB 用户可能在 MySQL 用户权限表中拥有localhost 或 IP,而不是任何主机 (%)。

您可以通过 telnet 到远程服务器的 3306 端口进行验证。

【讨论】:

  • 我在尝试通过 Navicat 连接到 3306 时遇到了这个问题。那时我正在运行 cPanel 界面,所以我有一个 GUI 可以遵循,这很有效。 +1
【解决方案2】:

根据documentation of mysqli_connect(),端口是一个附加参数。

$con=mysqli_connect("xxxxxx.db.0000095.hostedresource.com",
  "xxcorrectxx","xxcorrectxx", "xxcorrectxx", 3306);

【讨论】:

  • 可选参数,3306 being mysql default.
  • 我正要补充一点,这不应该是必要的,因为 3306 是默认端口。
猜你喜欢
  • 1970-01-01
  • 2012-12-08
  • 2011-04-21
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 1970-01-01
  • 2013-11-29
  • 2010-12-31
相关资源
最近更新 更多