之前在解决这个问题时,网上扒了很多方法,有建议修改config.inc.php文件的,也有建议config.default.php文件的;自己在下面看了下发现 config.inc.php和config.default.php 文件内容其实差不大,于是搜索了下它们的区别,如下:
config.default.php是默认配置文件;config.inc.php是用户定义的配置文件,可以覆写config.default.php里的配置。
config.inc.php中没有设置的选项将使用config.default.php的配置。
接下来回归正题,我的解决办法:
(1)分析是因为没有连接到数据库导致,于是修改/usr/share/phpmyadmin/config.inc.php文件(也可直接修改/etc/phpmyadmin/config.inc.php)
cd /usr/share/phpmyadmin/
cp config.sample.inc.php config.inc.php
vim config.inc.php
找到变量如下 $cfg['Servers'][$i]['host'] = 'localhost';
修改为如下 $cfg['Servers'][$i]['host'] = '127.0.0.1';
关闭浏览器重新登录,失败!!!
(2)分析是因为unix套接字问题,于是修改/etc/php/7.0/apache2/php.ini文件
找到变量并修改为如下 pdo_mysql.default_socket=/tmp/mysql.sock
重启mysql服务,重新登陆,失败!!!
以下内容引用百度:
- 一个MySQL客户可以两种不同的方式连接mysqld服务器: Unix套接字和TCP/IP
- Unix套接字,它通过在文件系统中的一个文件(缺省“/tmp/mysqld.sock”)进行连接;
- TCP/IP,它通过一个端口号连接。 //Unix套接字比TCP/IP更快,但是只有用在连接同一台计算机上的服务器。如果你不指定主机名或如果你指定特殊的主机名localhost,使用Unix套接字。
- 错误(2002)Can't connect to ...通常意味着没有一个MySQL服务器运行在系统上或当试图连接mysqld服务器时,你正在使用一个错误的套接字文件或TCP/IP端口。
- 由检查(使用ps)在你的服务器上有一个名为mysqld的进程启动!如果没有任何mysqld过程,你应该启动一个。
(3)最终解决办法,修改/etc/phpmyadmin/config.inc.php文件
find / -iname "config.inc.php"
查看到config.inc.php的位置如下:
/usr/share/phpmyadmin/config.inc.php
/usr/share/phpmyadmin/setup/frames/config.inc.php
/var/lib/phpmyadmin/config.inc.php
/etc/phpmyadmin/config.inc.php
修改文件如下:vim /etc/phpmyadmin/config.inc.php
然后,重启apache和mysql,重新登陆,成功!!!