在fedora 12下使用自己从源代码编译的mysql使用,安装过程很麻烦,但好在运行正常。
之前使用windows下mysql/phpmyadmin,到linux下,当然也少不了,整个phpmyadmin,包括配置文件都是从windows下直接拷贝来的,但连接数据库总是出错:
#2002 – 服务器没有响应 (或者本地 MySQL 服务器的套接字没有正确配置)
连接远程数据库,就是虚拟主机数据库服务器却是没有问题的。使用linux终端连接
mysql -h127.0.0.1 -uroot -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,而本机并没有配置这样的套接字文件,所以自然是连接失败了。
官方文档确实非常重要,比网上的一般的解决方法都更权威有效得多。