大家好,今天给各位分享2019天天爱天天做 localhost的一些知识,其中也会对为什么用localhost连不上mysql,用127.0.0.1却可以进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
用localhost不能连上mysql,但用127.0.0.1却可以,是什么原因?
localhost是走socket127.0.0.1是走3306端口
http://www.jeepshoe.org/651195202.htm
使用localhost连接失败的原因为在socket的方式下,php默认配置的mysql服务的socket文件不存在,所以导致连接失败,如果把连接失败的错误信息dump出来,你应该会看到错误信息中包含了“Nosuchfileordirectory”。
------------------转自:http://my.oschina.net/fhd/blog/500778----------------------------
localhost也叫local,正确的解释是:本地服务器。127.0.0.1在windows等系统的正确解释是:本机地址(本机服务器),他们的解析通过本机的host文件,windows自动将localhost解析为127.0.0.1。localhot(local)是不经网卡传输!这点很重要,它不受网络防火墙和网卡相关的的限制。127.0.0.1是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制。一般设置程序时本地服务用localhost是最好的,localhost不会解析成ip,也不会占用网卡、网络资源,防火墙对其不起作用,端口全开放。有时候用localhost可以,但用127.0.0.1就不可以的情况就是在于此。猜想localhost访问时,系统带的本机当前用户的权限去访问,而用ip的时候,等于本机是通过网络再去访问本机,可能涉及到网络用户的权限。
localhost127.0.0.1本机IP网络不联网不联网联网传输不使用网卡,不受防火墙限制网卡传输,受防火墙和网卡限制网卡传输,受防火墙和网卡限制访问本机访问本机访问本机或外部访问
-----------------------over---------------------------------------------------
http://yubosun.akhtm.com/tech/mysql-localhost.htm
分析:这是典型的socket没有正确设置的情况。
连接MySQL数据库有两种方式:TCP/IP(一般理解的端口的那种)和Unix套接字(一般叫socket或者sock)。大部分情况下,可以用localhost代表本机127.0.0.1,但是在MySQL连接时,二者不可混用,而且MySQL中权限设置中localhost与127.0.0.1也是分开设置的。当设置为127.0.0.1时,系统通过TCP/IP方式连接数据库;当设置为localhost时,系统通过socket方式连接数据库。
解决:首先要看本机MySQL的socket套接字文件在哪里,查看命令是:
<spanstyle="color:#455353"><spanstyle="color:#333333"><spanstyle="color:#000000">mysqld</span><spanstyle="color:#666600">--</span><spanstyle="color:#000000">verbose</span><spanstyle="color:#666600">--</span><spanstyle="color:#000000">help</span><spanstyle="color:#666600">|</span><spanstyle="color:#000000">grepsocket</span></span></span>n
输出结果显示套接字文件的位置,比如:这台服务器显示的是
<spanstyle="color:#455353"><spanstyle="color:#333333"><spanstyle="color:#000000">socket</span><spanstyle="color:#666600">/</span><spanstyle="color:#000088">var</span><spanstyle="color:#666600">/</span><spanstyle="color:#000000">run</span><spanstyle="color:#666600">/</span><spanstyle="color:#000000">mysqld</span><spanstyle="color:#666600">/</span><spanstyle="color:#000000">mysqld</span><spanstyle="color:#666600">.</span><spanstyle="color:#000000">sock</span></span></span>n
然后修改php的配置文件php.ini与之对应起来就好了。
找到这一项:
<spanstyle="color:#455353"><spanstyle="color:#333333"><spanstyle="color:#000000">mysql</span><spanstyle="color:#666600">.</span><spanstyle="color:#000000">default_socket</span><spanstyle="color:#666600">=</span></span></span>n
一般来说这一项都是空的,改成:
<spanstyle="color:#455353"><spanstyle="color:#333333"><spanstyle="color:#000000">mysql</span><spanstyle="color:#666600">.</span><spanstyle="color:#000000">default_socket</span><spanstyle="color:#666600">=</span><spanstyle="color:#008800">/var/</span><spanstyle="color:#000000">run</span><spanstyle="color:#666600">/</span><spanstyle="color:#000000">mysqld</span><spanstyle="color:#666600">/</span><spanstyle="color:#000000">mysqld</span><spanstyle="color:#666600">.</span><spanstyle="color:#000000">sock</span></span></span>n
这里应写上一步查询到的文件,根据你的情况设置。至此php配置就修改好了,如果是CLI(命令行)方式或者CGI方式的话,立即就生效,如果是FASTCGI方式,需要重启一下fastcgi进程。
OK,本文到此结束,希望对大家有所帮助。
本文由欣欣吧手游攻略栏目发布,感谢您对欣欣吧的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“2019天天爱天天做 localhost”