mysql_connect不适用于某个主机

时间:2009-09-03 01:37:40

标签: php mysql

无论我选择哪种数据库,每次使用mysql_connect()时都会得到这个:

警告:mysql_connect()[function.mysql-connect]:无法连接到第17行的filename.php中的“IP”(111)上的MySQL服务器 发生MySQL错误:无法在“IP”(111)

上连接到MySQL服务器

完全相同的文件在我的个人网站上运行正常。我尝试了在不同服务器上托管的多个数据库,它总是提供输出。

数据库本身托管在同一台服务器上,但在mysql_connect()中使用其完整的IP。使用localhost:port也不起作用,如下所示:

警告:mysql_connect()[function.mysql-connect]:无法通过第17行的filename.php中的套接字'/var/run/mysqld/mysqld.sock'(2)连接到本地MySQL服务器 发生MySQL错误:无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器(2)

但是使用IP应该可以工作,因为它通过托管在其他服务器上的同一文件调用它。

这是代码:

    $connect = mysql_connect($db_url,$db_user,$db_pass); // connects
    if ($connect == false) exit("A MySQL error has occurred: " . mysql_error());

现在,由于该文件可以在其他服务器上运行,我猜它与它所在的服务器有关,可能需要更改一些内容。我个人没有root权限访问服务器(只是我的共享主机部分)。有什么我可以做的PHP,编辑php.ini文件或我应该传递给有root权限的人吗?

编辑:好的,事实证明服务器无法访问外部数据库,因此这就是IP无法正常工作的原因。感谢您的所有答案,但我们决定只更改托管服务提供商。我们需要能够访问外部数据库。

4 个答案:

答案 0 :(得分:1)

这是托管服务?查看他们的文档,会有一些信息告诉您在哪里找到mysql。它不一定是localhost

例如,在startlogic.com上,您使用: yourdomain .startlogicmysql.com

答案 1 :(得分:1)

您可以使用相同的主机,用户名和密码使用mysqladmin进行连接吗?

mysqladmin -h $db_url -u $db_user -p $db_pass

将$ db_xxxx替换为实际值。 如果它与您的php脚本在同一主机上工作,那么sudo到apache User并尝试相同的测试。其中一个必定是失败的。

编辑:没关注sudo部分,我注意到你没有root权限。

答案 2 :(得分:0)

要尝试的其他内容:使用“127.0.0.1”而不是“localhost”。我之前遇到的问题是mysql愚蠢地假设它可以默默地将'localhost:'更改为'/var/run/mysqld/mysqld.sock'。

答案 3 :(得分:0)

您的措辞不是很清楚,我希望您不会因为您知道IP地址和端口号而从任何旧的Web服务器连接到同一个mysql服务器。如果网络主机完全胜任,他们可能已经使用了防火墙,因此只能通过他们自己的网络服务器访问它。