0

尝试连接到远程 Mysql 服务器时出现此错误:

php_network_getaddresses: getaddrinfo failed: Hôte inconnu.(翻译:)Host unknown

con.php:

<?php 
  $db_host     = 'http://xxx.xxx.xxx.xxx';
  $db_username = 'xxx';
  $db_password = 'xxx';
  $db_name     = 'xxx';

  $con = mysql_connect($db_host,$db_username,$db_password);

  $select_db = mysql_select_db($db_name,$con);

?>

连接到本地主机时一切正常,但对于远程连接它不起作用。

4

2 回答 2

5

$db_host = 'xxx.xxx.xxx.xxx';反而

您不能为 Mysql 使用 HTTP 协议,因为它们都在不同的端口上运行/使用不同的协议。

更多 HTTP(Web 服务)= 80 Mysql(您的数据库)= 3306 只是要注意,正如 BenM 所提到的,这是默认端口。在大多数情况下,这不会改变。但是,您将其端口更改为任何其他端口(就像您可以使用任何其他服务一样)。

此外,请查看PDO,因为 Mysql_ 函数将被弃用,并且在新系统和旧系统中使用也很危险。

看看我关于如何设置 PDO的答案之一

编辑 1

正如您在评论中 benM 的回答中提到的那样,“无法建立连接,因为目标机器主动拒绝了它。”

所以现在如果您在数据库托管的实际服务器上具有 root 访问权限,那么您必须检查服务器是否(在我的例子中是 ubuntu 服务器)

运行这个命令:

sudo netstat -pan | grep mysql

还看看这张图片:它几乎显示了 TCP 端口,如果它正在侦听或未列出(这里它正在侦听)

在此处输入图像描述

再次假设您对实际的 linux / (无论服务器)具有 root 访问权限,我只精通 ubuntu,但也可以为您提供其他服务器信息。

于 2013-04-18T14:36:35.613 回答
4

您无法使用 HTTP 协议连接到 MySQL(即由于端口冲突)。参数应该是 IP 字符串。删除http协议如下:

$db_host     = 'xxx.xxx.xxx.xxx';
$db_username = 'xxx';
$db_password = 'xxx';
$db_name     = 'xxx';

$con = mysql_connect($db_host, $db_username, $db_password);
$select_db = mysql_select_db($db_name, $con);

您还应该注意,可以将 MySQL 配置为阻止除localhost对用户帐户的访问之外的任何内容。确保您使用的用户能够从任何域访问数据库。

最后,mysql_*函数系列现在已被弃用,您应该避免将它们用于新代码。相反,请查看MySQLiPDO

于 2013-04-18T14:37:38.913 回答