我的代码只连接到localhost mysql服务器,但不能连接到远程服务器

时间:2013-04-18 14:33:19

标签: php mysql

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

php_network_getaddresses: getaddrinfo failed: Hôte inconnu.(翻译:{{1​​}})。

con.php:

Host unknown

连接到localhost时一切正常,但是对于远程连接,它不起作用。

2 个答案:

答案 0 :(得分:5)

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

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

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

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

查看at one of my answers如何设置PDO

  
    

编辑1

  

正如你在评论中提到benM的回答,“由于目标机器主动拒绝它,因此无法建立连接。”

所以现在如果您在实际服务器上拥有root访问权限,那么您必须检查服务器(我的情况下的示例是ubuntu服务器)

运行此命令:

sudo netstat -pan | grep mysql

另外看一下这张图片:它显示了TCP端口,如果它正在收听或不收录(这里正在收听)

enter image description here

再次假设您具有对实际linux /(无论服务器)的root访问权限,我只熟悉ubuntu,但也可以帮助您处理其他服务器信息。

答案 1 :(得分: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