2013-04-18 53 views
0

当试图连接到远程MySQL服务器我得到这个错误:我的代码只连接到本地主机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); 

?> 

当连接到本地主机一切都很好,但远程连接没有奏效。

+2

您无法通过HTTP连接到MySQL。删除协议,并确保用户有权访问所有域。 – BenM

回答

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

+0

现在我得到这个错误'不能建立连接,因为目标机器主动拒绝它。'我使用root登录,并且它拥有所有权限。 – thesubroot

+0

你必须检查数据库是否托管一台机器1)是否允许传入流量到该端口。 2)如果您连接的用户有权使用这些表/数据库。 –

+0

,并允许从该端口进行流量。 –

5

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

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

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

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

就以如何设置PDO

编辑1

正如你在评论benM的答复中提到,“无法连接,因为做了一下at one of my answers目标机器积极拒绝它。“

所以现在如果你有数据库在随后举办的实际服务器上的root访问权限,你必须检查服务器(例如在我的情况是Ubuntu的服务器)

运行此命令:

sudo netstat -pan | grep mysql 

也来看看这样的画面:几乎是它显示的TCP端口,如果是听还是不上市(这是听)

enter image description here

再次假设你有root权限访问实际的linux /(任何服务器)我只能熟练使用Ubuntu,但也可以帮助你与其他服务器信息。

+0

MySQL不一定在'3306'上运行。他们将被弃用,而不是折旧;) – BenM

+0

据我所知(这是有限的)数据库服务器正在侦听端口3306上的请求。如果我不正确,请你详细说明一下吗? –

+1

'3306'是MySQL的默认端口,但它可以配置为使用不同的端口。 – BenM

相关问题