使用以下代码我可以连接到mysql:
mysql_connect("localhost","username","");
但如果我将localhost
更改为127.0.0.1
,我会收到以下错误:
无法在'127.0.0.1'(13)
上连接到MySQL服务器为什么它不适用于127.0.0.1?
答案 0 :(得分: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。
答案 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