终端下可以登录mysql,但是用phpmyadmin无法登录提示:#2002 无法登录 MySQL 服务器
20131102152214_01

解决方法如下:
修改config.inc.php文件,将config.inc.php 中

$cfg['Servers'][$i]['host'] = 'localhost';

改成:

$cfg['Servers'][$i]['host'] = '127.0.0.1';

如果修改过端口,记得也要修改端口号!

$cfg['Servers'][$i]['host'] = '127.0.0.1:3312';

还要添加:

$cfg['Servers'][$i]['hide_db'] = ‘information_schema’;//使用登陆后看不见information_schema数据库,隐藏数据库!

如果要隐藏多个可以用"|"来隔开其他数据库名,例如:

$cfg['Servers'][$i]['hide_db'] = '(information_schema|phpmyadmin|mysql)'

只是为了安全的目的隐藏起来。

如果想要隐藏全部以a开头的数据库,可以使用'^a'

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

为什么在linux下localhost就是不能连接呢?查mysql官方文档[参看这里],看到有这样的句话:
如果未指定指定主机名或指定了特殊的主机名localhost,将使用Unix套接字。
Unix套接字默认为/tmp/mysql.sock,而本机并没有配置这样的套接字文件,所以自然是连接失败了。
官方文档确实非常重要,比网上的一般的解决方法都更权威有效得多。

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

解决方法:编辑config.inc.php

$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['blowfish_secret'] = 'abcde';(其中的"abcde"自定义)

这个密码用于Cookies的加密,以免多个PhpMyAdmin或者和其他程序共用Cookies时搞混。

暂无评论