使用php跨服务器的mysqli连接错误
Posted
技术标签:
【中文标题】使用php跨服务器的mysqli连接错误【英文标题】:mysqli connection error across servers using php 【发布时间】: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 服务器所在站点的权限。当我将文件放在另一台主机上时,它没有连接。
【参考方案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 是默认端口。以上是关于使用php跨服务器的mysqli连接错误的主要内容,如果未能解决你的问题,请参考以下文章