2012-10-23 51 views
4

当使用PHP连接到Web主机上的MySQL数据库时,引用服务器的最佳方式是什么?我应该如何在Web主机上引用MySQL服务器?

MySQL的管理页面,我的虚拟主机上说什么的服务器的IP地址,但我可以使用除IP号码别的其他?

例如,

$con = mysql_connect("l00.50.10.10","user","password"); 
if (!$con) { die('Could not connect: ' . mysql_error()); } 

当我使用localhost我得到这样的输出:

无法连接:无法通过套接字 '/var/lib/mysql/mysql.sock' 连接到本地MySQL服务器( 2)

+0

这是更常见的是使用“连接到本地MySQL服务器localhost“,如果你的PHP代码与数据库在同一台服务器上。 –

+2

也许这是失败的,因为你有一个小写的L而不是一个数字1? ;) – Vulcan

+0

或者,更好的是,PDO。 –

回答

0

您可以将数据库服务器的主机名,如mydbbox.example.com。使用IP地址可能会更快,因为不需要DNS查找。

另请参阅this SO question

2

您可以使用“localhost”作为主机来引用脚本的系统。

$con = mysql_connect("localhost", "user", "password"); 

然而,连接到IP是最有可能失败,因为你有一个小写的L,你应该有一个数字(但我希望在IP中的问题只是一个例子)。

同样,使用的mysqli或PDO代替MySQL的,这是对弃用的边缘。

+0

如果主机提供商使用数据库和Web的单独服务器,这将无法正常工作 – Svetoslav

+0

@Svetlio有效的点,尽管它可能在同一台服务器上。无论哪种方式,我在我的答案中加入了关于'l'和'1'的评论。谢谢。 – Vulcan

+0

当我使用'localhost'时,我得到这个输出:'无法连接:无法通过套接字连接到本地MySQL服务器'/var/lib/mysql/mysql.sock'(2)' – CJ7

-1

这主要取决于主机如何配置。根据我的经验,您将使用“localhost”,即服务器的IP地址或由主机设置的某种子域。

我想通过测试“localhost”作为这个开始是大多数共享主机环境中的默认值。

$con = mysql_connect("localhost", "username", "password"); 
0

此问题的答案取决于您的主机(或其控制面板)如何配置MySQL特权。这些权限是IP或主机名特定的,所以经常通过IP或主机名连接可能不具有相同的连接结果。如果有疑问,我会坚持他们给你的设置。

了解更多:http://dev.mysql.com/doc/refman/5.0/en/account-names.html

+0

我在MySQL管理页面上看到的所有内容都是服务器的IP地址,但我不愿意使用它,因为它们可能会在不通知的情况下对其进行更改。 – CJ7

+0

这是一个值得关注的问题。在这种情况下,我会问你的主机是否有一个稳定的主机名,你可以使用它来连接到具有相同权限的同一台服务器。 – jimp

0

如果数据库主机是同一台计算机 - 使用localhost。当您使用端口号localhost时,MySQL将通过本地套接字进行连接,而不是tcpip(网络)。

有时服务器不支持套接字连接,你就会得到错误是这样的:

无法连接:无法连接到通过socket本地MySQL服务器...

编辑/校正: 如果你不能通过套接字连接 - 使用127.0.0.1。它会通过tcpip强制conncetion。

如果数据库服务器安装在其他机器上 - 可以使用IP addressdomain

大多数情况下IP地址更好,因为即使DNS(域名服务器)工作不正常或域名过期,也可以建立连接。


而且一个建议 - 使用mysqli_,而不是在新的应用mysql_功能。新功能在使用中非常相似,但更安全。

mysql_职能已经过时,他们不建议新的应用。他们仍然在PHP可用,因为CMS系统与旧的,过时的软件兼容性(,电子商务系统等

PHP Help说(约的mysql_connect):

这个扩展的使用气馁相反,和mysqli或PDO_MYSQL 扩展应使用


更多本地主机与连接 - 从资讯

在Unix中,MySQL程序处理的主机名localhost特别,因为是你所期望的相比其他 基于网络的程序可能不同 方式。对于连接到本地主机,MySQL程序 尝试使用Unix套接字文件连接到本地服务器。 即使给出了--port或-P选项来指定端口号 ,也会发生这种情况。为了确保客户端建立TCP/IP连接到 本地服务器上,使用--host或-h指定 127.0.0.1

注意的主机名值,即“--port”和“-P”选项在PHP以外的其他上下文中描述,但连接机制的工作方式类似,并且localhost是“特殊”名称,无关紧要的是此PHP,控制台或其他软件。

+0

当我使用'localhost'时,我得到这个输出:'无法连接:无法通过套接字连接到本地MySQL服务器'/var/lib/mysql/mysql.sock'(2)' – CJ7

+0

我再次更新了我的答案。 – Kamil

+0

'localhost:3306'给出了同样的错误。 – CJ7

0

你有没有试过在谷歌类似的东西?

PHP无法连接:无法通过 插座 '/var/lib/mysql/mysql.sock'(2)

相关问题