无论我选择哪种数据库,每次使用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无法正常工作的原因。感谢您的所有答案,但我们决定只更改托管服务提供商。我们需要能够访问外部数据库。
答案 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服务器。如果网络主机完全胜任,他们可能已经使用了防火墙,因此只能通过他们自己的网络服务器访问它。