我有一个LAMP堆栈框(CentOS 6)和另一个运行mysql服务器的CentOS 6框。
我已经在LAMP盒子上安装了phpmyadmin,但是我根本无法把它和我的SQL框交谈。
我已经在config.inc.php中configuration了以下内容
/* Servers configuration */ $i = 0; /* Server: usp-ggdb2 [1] */ $i++; $cfg['Servers'][$i]['verbose'] = 'usp-ggdb2'; $cfg['Servers'][$i]['host'] = '10.1.2.3'; $cfg['Servers'][$i]['port'] = ''; $cfg['Servers'][$i]['socket'] = ''; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['Servers'][$i]['user'] = ''; $cfg['Servers'][$i]['password'] = '';
当我浏览到phpmyadmin网站时,出现以下错误:
#2002 – 无法通过套接字“/var/lib/mysql/mysql.sock”连接到本地MySQL服务器(2)服务器没有响应(或本地服务器的套接字configuration不正确)。
我不知道为什么它正在试图连接到本地服务器,因为我只configuration了一台服务器(而且是远程的)。
如果我tcpdump我可以看到,它不会尝试build立一个连接到我指定的IP。
这就好像我的configuration文件被忽略。
有没有办法打开更多的debugging信息? 任何和所有的build议欢迎!
我已经解决了这个问题。 的确,我的configuration文件被忽略。 我一直在将config.inc.sample.php复制到网站顶级目录(/ var / www / html / pma)中的config.inc.php。
但是,在CentOS 6上有一个单独的configuration目录 – / etc / phpMyAdmin /。 一旦我复制我的configuration,一切正常。
在RHEL 6和CentOS 6中find的标准设置之一是SELinux默认为强制模式。 您可以使用getenforce命令来validation。
如果在Enforcing模式下,validationSELinux是否是罪魁祸首的最快捷方式通常是使用setenforce 0临时禁用SELinux。 如果在禁用SELinux的情况下,所有的操作都可以按照预期进行。
将SELinux以setenforce 1返回到执行模式,并将允许Web应用程序的基于networking的数据库访问策略设置为:
setsebool -P httpd_can_network_connect_db 1
如果MySQL数据库正在监听可能不足的非标准端口,则可以尝试允许通用networking策略:
sesebool -P httpd_can_network_connect 1
我碰到另一个原因,你可以得到这个错误。 您需要满足以下条件
正如在这个PHP错误中所描述的,MySQLND将服从MySQL的偏好并尝试validationSSL证书。 由于它不能(自签名)连接只是失败,2002年的错误(好,模糊!)
正如在错误中提到的那样,PHP 5.6.16(也出现在7.0+中)向mysqli_real_connect添加了一个名为MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT连接选项,该选项将禁用MySQLND端的SSL证书validation。 对于PMA 4.6.0以前的版本,您将不得不编辑libraries/dbi/DBIMysqli.php并编辑行
$client_flags |= MYSQLI_CLIENT_SSL;
并将其replace(仅适用于PHP 5.6.16或更高版本)
$client_flags |= MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT;
对于PMA 4.6.0或更高版本,您可以简单地在configuration中进行设置
$cfg['Servers'][$i]['ssl_verify'] = false;