日期:2014-05-16  浏览次数:20760 次

#2002 无法登录 MySQL 服务器

?

#2002 – 服务器没有响应 (或者本地 MySQL 服务器的套接字没有正确配置)

连接远程数据库,就是虚拟主机数据库服务器却是没有问题的。使用linux终端连接

mysql -h 127.0.0.1 -u root -p

也没有任何问题。

而ping localhost,返回也是正常的,说明linux知道localhost就是本机的。

[root@localhost www]# ping localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.062 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.077 ms
^C
— localhost ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2697ms
rtt min/avg/max/mdev = 0.062/0.071/0.077/0.011 ms

感觉很怪异,google一下,有这样的解决方案:

要将 config.inc.php 中
$cfg['Servers'][$i]['host'] = ’localhost’;
改成 $cfg['Servers'][$i]['host'] = ’127.0.0.1′;
还要添加
$cfg['Servers'][$i]['hide_db'] = ‘information_schema’;//使用登陆后看不见information_schema数据库

于是把配置文件里的host改成127.0.0.1,再连接,好了,连接正常。($cfg['Servers'][$i]['hide_db'] = ‘information_schema’;这一句加不加都无所谓,不影响连接数据库)

为什么在linux下localhost就是不能连接呢?查mysql官方文档[参看这里],看到有这样的句话:

如果未指定指定主机名或指定了特殊的主机名localhost,将使用Unix套接字。

Unix套接字默认为/tmp/mysql.sock,而本机并没有配置这样的套接字文件,所以自然是连接失败了。

官方文档确实非常重要,比网上的一般的解决方法都更权威有效得多。

?

?

PS:新版本的PhpMyAdmin 增强了安全性,需要在配置文件设置一个短语密码。否则进入之后会有“配置文件现在需要一个短语密码。”的红色警叹提示。

解决方法: