MySQL在127.0.0.1上工作但在localhost上不工作?

14

我在php MySQL中遇到了一个奇怪的问题:

php可以连接127.0.0.1但不能连接localhost

如何解决这个问题?


@air:我编辑了你的问题,如果你不同意的话可以回滚。 - Peter Lang
9个回答

9

在命令行中尝试输入ping localhost,它可能会解析为::1:,这是127.0.0.1的IP6等效地址。

要解决此问题,请添加(或取消注释)以下行:

   127.0.0.1       localhost

C:\WINDOWS\system32\drivers\etc\hosts文件中


5

默认情况下,Windows和大多数操作系统都会在hosts文件中定义localhost。请检查以下文本文件以了解详情:

C:\WINDOWS\system32\drivers\etc\hosts

请注意,“hosts”是一个没有扩展名的文件,而不是一个文件夹。这个文件应该基本上是空的,如果你看到条目,要么是你的 AV/spam 拦截器添加了大量指向 127.0.0.1 的条目,要么是恶意软件在里面写入了垃圾内容,尽管如此,新的条目在旧的条目下面。Localhost 应该是该文件中的第一个条目。

5
这个hosts文件可能针对本地主机有::1。为了让事情正常工作,我通常会禁用任何与IP4无关的东西。 - Zachary Scott

3

对于Mac电脑,以下是解决方法:

使用本地主机名(localhost)而非127.0.0.1连接MySQL。长期以来,我一直使用127.0.0.1在我的开发平台上连接MySQL,因为某种原因localhost不能用。事实证明,这是因为127.0.0.1使用TCP/IP而localhost使用套接字。php.ini文件指向错误的mysql.sock位置,所以你只需更改它,重新启动Apache就可以了!

Open php.ini: /private/etc/php.ini
Find the following line: mysql.default_socket = /var/mysql/mysql.sock
Replace with: mysql.default_socket = /tmp/mysql.sock
Restart apache: apachectl restart

注意:根据您的设置,您可能还需要在php.ini中更新这些行:
mysqli.default_socket = /tmp/mysql.sock
pdo_mysql.default_socket = /tmp/mysql.sock

注意:如果您没有php.ini文件,则需要复制提供的默认文件php.ini.default。
sudo cp /private/etc/php.ini.default /private/etc/php.ini

通过 http://madproject.com/general/connect-to-mysql-using-localhost-instead-of-127-0-0-1-on-a-mac/ 实现在Mac上使用本地主机连接MySQL,而不是使用127.0.0.1。


2

1
如果我没记错的话,我之前遇到过这个问题。我通过“127.0.0.1”为用户提供了访问权限,但是没有通过“localhost”。 - Adrian J. Moreno

2
我记得这是Mysql在Windows上一个长期存在且有文档记录的功能。可能与本地套接字的工作方式有关。

1

尝试一下:

IE-->工具-->选项-->连接-->LAN设置,勾选“绕过代理服务器访问本地地址”


1

如果MySQL连接到127.0.0.1,则是通过TCP/IP连接,而如果连接到localhost,则是通过套接字连接。


PHP是否在正确的位置查找mysql.sock?确保php.ini和my.conf具有匹配的位置。


这个声明有没有任何参考资料? - Reorx

0

本地主机是否解析为IPv6地址,而不是IPv4地址,并且MySQL未侦听v4地址?

解决方案是使本地主机解析为v4地址,或使MySQL侦听v6地址。


0

如果您不在Windows上,请测试MySQL是否通过套接字连接,通常在本地会这样做。

使用MySQL客户端强制使用TCP

mysql -usomeone -p --protocol=TCP

vs. socket(Linux 上的默认选项)

mysql -usomeone -p 
mysql -usomeone -p --protocol=socket

后者对我的someone@127.0.0.1无效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接