11

使用以下代码,我可以连接到 mysql: mysql_connect("localhost","username","");

但是,如果我更改localhost为,127.0.0.1我会收到以下错误:

无法连接到“127.0.0.1”上的 MySQL 服务器 (13)

为什么它不适用于 127.0.0.1?

4

5 回答 5

20

localhost是特殊情况并使用 UNIX 套接字而不是 TCP/IP。127.0.0.1没有得到那种特殊的处理。

请参阅文档

在 Unix 上,MySQL 程序对主机名 localhost 进行了特殊处理,与其他基于网络的程序相比,这种方式可能与您所期望的不同。对于到 localhost 的连接,MySQL 程序尝试使用 Unix 套接字文件连接到本地服务器。即使给出 --port 或 -P 选项来指定端口号,也会发生这种情况。要确保客户端与本地服务器建立 TCP/IP 连接,请使用 --host 或 -h 指定主机名值 127.0.0.1,或本地服务器的 IP 地址或名称。您还可以使用 --protocol=TCP 选项显式指定连接协议,即使对于 localhost 也是如此。

如果在使用 TCP/IP 时它不起作用,那么数据库可能没有在网络上侦听。这通常是一件好事,因为它增强了安全性(不是监听 127.0.0.1 会暴露任何问题,而是监听所有接口会提供更多攻击机会)。

如果您真的想允许通过网络进行连接,请参阅skip-networking

于 2012-04-27T09:18:56.157 回答
1

您的主机文件中是否有一个条目将 127.0.0.7 映射到本地主机?

于 2012-04-27T09:19:11.700 回答
0

您的系统上是否安装/运行了超过 1 个 mysql 服务器?如果是这样,请指定您尝试访问的 mysql 服务器的端口号,例如 127.0.0.1:3306,127.0.0.1:8889 等。

如果您不知道您的系统上是否还有其他 mysql 服务器实例正在运行,请指定端口。

于 2012-04-27T09:21:29.470 回答
0

当您在数据库'root'@'127.0.0.1'中的"USER_PRIVILEGES"表中添加权限时,您将能够访问它"information_schema"

于 2012-04-27T09:21:34.137 回答
0

您也可以尝试禁用 SELINUX

于 2016-08-02T09:52:21.467 回答