无法使用127.0.0.1连接到mysql

时间:2012-04-27 09:16:48

标签: php mysql database

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

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

无法在'127.0.0.1'(13)

上连接到MySQL服务器

为什么它不适用于127.0.0.1?

5 个答案:

答案 0 :(得分:20)

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

请参阅the documentation

  

在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

答案 1 :(得分:1)

你的主机文件中有一个条目映射127.0.0.7到localhost吗?

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

您也可以尝试禁用SELINUX