不懂就问, localhost 和 127.0.0.1 有什么区别?

2020-05-13 21:56:50 +08:00
 zcxzzz

事情是这样的本人升级了一下 php 的版本,然后把之前的配置直接 cp 过来后,wordpress 显示建立数据库连接出错,我再三检查各项配置确认无误,然而还是无法连接数据库。最后把 wp-config.php 中 DB-HOST 的 localhost 改成 127.0.0.1 后恢复正常(之前 php 版本 7.0,DB-HOST 是 localhost 一直正常,本次升级到了 7.3 )。

2939 次点击
所在节点    问与答
11 条回复
noe132
2020-05-13 22:17:43 +08:00
localhost 是 hostname,需要被 resolve 到一个 IP,就像其他域名一样
127.0.0.1 是 ip,不需要 resolve

你的问题大概是 resolve 失败或者 resolve 到了别的东西
noe132
2020-05-13 22:19:04 +08:00
也有可能 mysql 把 localhost 当作 unix socket 来处理了
msg7086
2020-05-13 22:21:31 +08:00
localhost 是主机名,127.0.0.1 是 IP 。

而你现在遇到的是 MySQL 中的 localhost 。MySQL 中的 localhost 是一个特殊默认值,指使用 Unix Socket 来连接,而非使用网络连接。所以 MySQL 中的 localhost 不是指 localhost 网络主机。
zcxzzz
2020-05-13 22:25:01 +08:00
@noe132 但是我之前一直就是 localhost,是可以正常使用的,php 版本一升级就不行了,搞不明白啥原因
zcxzzz
2020-05-13 22:26:47 +08:00
@msg7086 也就是说在其他地方比如 ping localhost 他会找到 127.0.0.1 而在 mysql 中 localhost 是个特殊值,找不到 127.0.0.1 ?可以这样理解吗
ajaxfunction
2020-05-13 22:31:36 +08:00
@zcxzzz
mysql 中在 linux 下,是套接字 类似进程的一个东西
cmostuor
2020-05-13 22:38:06 +08:00
建议检查一下你的 hosts 文件确保 localhost 是解析到 127.0.0.1 上
Tink
2020-05-13 22:42:26 +08:00
/etc/hosts 里面 localhost 需要解析到 127.0.0.1
msg7086
2020-05-13 23:51:00 +08:00
@zcxzzz 是的,MySQL 里 localhost 是特殊值。

可能你之前是 MySQL 监听 Unix Socket,而现在 Socket 地址变了,找不到文件了。
xiadong1994
2020-05-14 00:06:30 +08:00
准确的来说是 socket file
zcxzzz
2020-05-14 10:18:07 +08:00
@cmostuor 检查了 是解析到 127.0.0.1 的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/671399

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX