phpmyadmin不会连接到远程MySQL实例

我有一个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 

我碰到另一个原因,你可以得到这个错误。 您需要满足以下条件

  1. 使用PHP的MySQL本机驱动程序(推荐)
  2. 使用MySQL 5.6或更高版本
  3. 使用自签名SSL证书进行MySQL通信

正如在这个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;