Php 为什么“localhost”不能像MySQL主机那样工作,而“MyPCName”可以呢?

Php 为什么“localhost”不能像MySQL主机那样工作,而“MyPCName”可以呢?,php,mysql,localhost,Php,Mysql,Localhost,我正在尝试从Windows/IIS 7.5上的PHP WordPress连接到MySQL,结果如下: define('DB_HOST', 'DevPC'); // -> works define('DB_HOST', 'localhost'); // -> connection error 奇怪的是,在另一台机器上Windows Server+IIS 7.5,localhost工作正常。这是什么原因造成的?一些PHP设置?MySQL设置 在Unix上,MySQL

我正在尝试从Windows/IIS 7.5上的PHP WordPress连接到MySQL,结果如下:

define('DB_HOST', 'DevPC');        // -> works
define('DB_HOST', 'localhost');    // -> connection error
奇怪的是,在另一台机器上Windows Server+IIS 7.5,localhost工作正常。这是什么原因造成的?一些PHP设置?MySQL设置

在Unix上,MySQL程序专门处理主机名localhost,与其他基于网络的程序相比,其处理方式可能不同于您所期望的。对于到本地主机的连接,MySQL程序尝试使用Unix套接字文件连接到本地服务器。即使提供了-port或-P选项来指定端口号,也会发生这种情况

使用127.0.0.1代替localhost

在Unix上,MySQL程序专门处理主机名localhost,与其他基于网络的程序相比,其处理方式可能不同于您所期望的。对于到本地主机的连接,MySQL程序尝试使用Unix套接字文件连接到本地服务器。即使提供了-port或-P选项来指定端口号,也会发生这种情况


使用127.0.0.1代替本地主机。

在windows中,您可以检查

c:\windows\system32\drivers\etc\hosts
要知道这条线

127.0.0.1
localhost在那里

/etc/resolv.conf in linux

在windows中,您可以检查

c:\windows\system32\drivers\etc\hosts
要知道这条线

127.0.0.1
localhost在那里

/etc/resolv.conf in linux

您应该向我们提供连接的错误输出。你确定这不是用户访问问题吗?记得吗user@DevPC不一样user@localhost当连接到mysql时。即使两个主机名转换为相同的IP。

您也应该提供连接的错误输出。你确定这不是用户访问问题吗?记得吗user@DevPC不一样user@localhost当连接到mysql时。即使两台计算机上的两个主机名都转换为相同的IP。

也会注释掉127.0.0.1规则,并显示一条消息,说明本地主机名解析是在DNS本身内处理的。这就是为什么我发现localhost在一台机器上工作而在另一台机器上不工作很奇怪的原因。也许你的dns系统做错了。。对localhost执行ping,看看结果如何。它应该在两台机器上都返回127.0.0.1,127.0.0.1规则被注释掉,并且有一条消息表明本地主机名解析在DNS本身内处理。这就是为什么我发现localhost在一台机器上工作而在另一台机器上不工作很奇怪的原因。也许你的dns系统做错了。。对localhost执行ping,看看结果如何。它应该返回127.0.0.1对不起,我应该指定它在Windows上。同样的回答适用吗?顺便说一句,我试图将“MyPCName”更改为“127.0.0.1”,结果导致连接错误。@Borek:引用自MySQL手册,它谈到的UNIX不是Windows,所以我会说不。如果Windows上存在连接问题,请检查防火墙设置。我建议您首先尝试命令行客户端,因为您更容易获得反馈。更改连接参数并对其进行故障排除,直到其正常工作:抱歉,我应该指定这是在Windows上进行的。同样的回答适用吗?顺便说一句,我试图将“MyPCName”更改为“127.0.0.1”,结果导致连接错误。@Borek:引用自MySQL手册,它谈到的UNIX不是Windows,所以我会说不。如果Windows上存在连接问题,请检查防火墙设置。我建议您首先尝试命令行客户端,因为您更容易获得反馈。更改连接参数并对其进行故障排除,直到其正常工作:请记住,localhost默认使用域套接字,而不是TCP/IP。使用127.0.0.1强制TCP/IP。这可能会改变观察到的行为,尝试显式环回地址有助于缩小问题。请记住,本地主机默认使用域套接字,而不是TCP/IP。使用127.0.0.1强制TCP/IP。这可能会改变观察到的行为,尝试显式环回地址有助于缩小问题。太好了,就是这样。我有一个用户使用%作为主机匹配规则,我认为这将允许该用户来自任何主机,但显然不是本地主机。太好了,就是这样。我有一个以%作为主机匹配规则的用户,我认为这将允许该用户来自任何主机,但显然不是本地主机。