无法使用“localhost”连接到 MySQL,但使用“127.0.0.1”可以吗?

Pet*_*ite 13 mysql linux ubuntu hostname socket

我的 /etc/hosts 文件如下所示:

127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Run Code Online (Sandbox Code Playgroud)

我在构建服务器时发现,虽然我可以成功 ping localhost,但在 Postfix 和 Apache 和 Dovecot 等服务的某些配置文件中,我需要指定127.0.0.1而不是localhost为了使它们工作。

我还需要更改某些数据库驱动网站的配置文件,用于localhost连接到 MySQL。

我已经尝试了对该hosts文件的各种修改,但到目前为止我尝试过的一切都没有帮助。

服务器正在运行 Ubuntu 12.04.02 LTS。它没有安装 selinux,即使在设置 IPtables 默认策略以接受和刷新它们之后,上述情况仍然存在。

dre*_*ard 16

您可能要检查的一件事是(这需要您登录到 MySQL 控制台) - 检查以确保您有权root通过localhost.

mysql -h 127.0.0.1 -u root -p

-- 登录成功后 --

mysql> select user,host from mysql.user;
+------+--------------------------------+
| user | host                           |
+------+--------------------------------+
| root | 127.0.0.1                      | 
| root | ::1                            |
| root | localhost                      | <-- Make sure you have a localhost entry for root
+------+--------------------------------+
3 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

只是把它扔在那里,以防万一这是问题所在。


EEA*_*EAA 8

大多数 MySQL 客户端很奇怪,因为如果您将主机指定为localhost,它们会将其别名为套接字连接而不是 TCP 连接。您的选择是坚持使用,127.0.0.1或者,如果客户端支持它(如 mysql CLI 二进制文件对--protocol标志的支持),则强制它使用 TCP 而不是 unix 套接字。

  • @PeterSnow 在您的 MySQL 配置中设置一个 Unix 域套接字。 (3认同)