localhost 是走 socket 127.0.0.1 是走 3306端口

http://www.jeepshoe.org/651195202.htm

利用localhost连接失落败的缘故原由为在socket的办法下,php默认配置的mysql做事的socket文件不存在,以是导致连接失落败,如果把连接失落败的缺点信息dump出来,你该当会看到缺点信息中包含了“No such file or directory”。

php不能用localhost为什么用localhost连不上mysql用127001却可以 Ruby

------------------转自: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的时候,即是本机是通过网络再去访问本机,可能涉及到网络用户的权限。

localhost 127.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套接字文件在哪里,查看命令是:

<span style=\公众color:#455353\"大众><span style=\"大众color:#333333\"大众><span style=\"大众color:#000000\公众>mysqld </span><span style=\"大众color:#666600\"大众>--</span><span style=\"大众color:#000000\"大众>verbose </span><span style=\"大众color:#666600\"大众>--</span><span style=\"大众color:#000000\"大众>help </span><span style=\"大众color:#666600\"大众>|</span><span style=\"大众color:#000000\"大众> grep socket</span></span></span>

输出结果显示套接字文件的位置,比如:这台做事器显示的是

<span style=\"大众color:#455353\公众><span style=\"大众color:#333333\公众><span style=\公众color:#000000\"大众>socket </span><span style=\公众color:#666600\公众>/</span><span style=\公众color:#000088\"大众>var</span><span style=\"大众color:#666600\"大众>/</span><span style=\公众color:#000000\"大众>run</span><span style=\"大众color:#666600\"大众>/</span><span style=\公众color:#000000\"大众>mysqld</span><span style=\"大众color:#666600\公众>/</span><span style=\公众color:#000000\"大众>mysqld</span><span style=\"大众color:#666600\"大众>.</span><span style=\"大众color:#000000\"大众>sock</span></span></span>

然后修正php的配置文件php.ini与之对应起来就好了。

找到这一项:

<span style=\"大众color:#455353\公众><span style=\公众color:#333333\"大众><span style=\"大众color:#000000\"大众>mysql</span><span style=\"大众color:#666600\公众>.</span><span style=\"大众color:#000000\"大众>default_socket </span><span style=\"大众color:#666600\"大众>=</span></span></span>

一样平常来说这一项都是空的,改成:

<span style=\"大众color:#455353\"大众><span style=\"大众color:#333333\公众><span style=\"大众color:#000000\"大众>mysql</span><span style=\"大众color:#666600\"大众>.</span><span style=\公众color:#000000\"大众>default_socket </span><span style=\公众color:#666600\公众>=</span> <span style=\"大众color:#008800\公众>/var/</span><span style=\"大众color:#000000\"大众>run</span><span style=\"大众color:#666600\"大众>/</span><span style=\"大众color:#000000\公众>mysqld</span><span style=\"大众color:#666600\"大众>/</span><span style=\"大众color:#000000\"大众>mysqld</span><span style=\"大众color:#666600\公众>.</span><span style=\"大众color:#000000\"大众>sock</span></span></span>

这里应写上一步查询到的文件,根据你的情形设置。
至此php配置就修恰好了,如果是CLI(命令行)办法或者CGI办法的话,立即就生效,如果是FASTCGI办法,须要重启一下fastcgi进程。