我的 /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
我在构建服务器时发现,虽然我可以成功 ping 通 localhost,但是在 Postfix、Apache 和 Dovecot 等服务的某些配置文件中,我需要指定127.0.0.1
而不是localhost
才能使它们正常工作。
我还需要更改某些数据库驱动网站的配置文件,这些网站用于localhost
连接 MySQL。
我尝试对该hosts
文件进行各种修改,但到目前为止都没有任何帮助。
该服务器运行的是 Ubuntu 12.04.02 LTS。它没有安装 selinux,即使在将 IPtables 默认策略设置为接受并刷新它们后,上述情况仍然存在。
答案1
您可能需要检查的一件事是(这需要您登录到 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)
只是把它扔到那里,以防万一这是问题所在。
答案2
大多数 MySQL 客户端都很奇怪,如果你将主机指定为localhost
,它们会将其别名为套接字连接而不是 TCP 连接。你的选择是要么坚持使用127.0.0.1
,要么如果客户端支持它(就像 mysql CLI 二进制文件使用标志一样--protocol
),强制它使用 TCP 而不是 unix 套接字。
答案3
需要注意的是,如果你使用的是 MariaDB,则授权是否正确存在一个错误,该错误会导致版本 10.0.1 和 5.5.30 中出现这种行为 https://mariadb.atlassian.net/browse/MDEV-4356
答案4
PHP 仍在尝试使用默认套接字位置。如果您将 MariaDB/MySQL 文件夹从/var/lib/mysql到另一个位置。为了解决这个问题,你必须在/etc/php.ini文件。
mysqli.default_socket =/newDBLocation/mysql/mysql.sock