phpMyAdmin“;无法登录到MySQL服务器";使用PHP7.0.0RC7

phpMyAdmin“;无法登录到MySQL服务器";使用PHP7.0.0RC7,php,mysql,nginx,mysqli,phpmyadmin,Php,Mysql,Nginx,Mysqli,Phpmyadmin,设置: 德比安·杰西 mysqld 5.5.46-0+deb8u1 来自dotdeb.org的nginx 1.8.0 来自dotdeb.org的php fpm 7.0.0 RC7 phpMyAdmin 4.5.2 我最近在我的开发linux机器上升级到PHP7.0RC7 从那时起,phpMyAdmin只抛出“无法登录到MySQL服务器”以及“配置中定义的controluser连接失败”。没有进一步的消息、错误号或详细信息 我还无法从中找到更多关于连接失败原因的信息(phpMyAdmin中高度

设置:

  • 德比安·杰西
  • mysqld 5.5.46-0+deb8u1
  • 来自dotdeb.org的nginx 1.8.0
  • 来自dotdeb.org的php fpm 7.0.0 RC7
  • phpMyAdmin 4.5.2
我最近在我的开发linux机器上升级到PHP7.0RC7

从那时起,phpMyAdmin只抛出“无法登录到MySQL服务器”以及“配置中定义的controluser连接失败”。没有进一步的消息、错误号或详细信息

我还无法从中找到更多关于连接失败原因的信息(phpMyAdmin中高度抽象的类使得连接很难实现)

任何关于如何从phpMyAdmin获得更多信息的提示都将不胜感激

  • MySQL服务器正在运行
  • 我可以使用mysql和mysqladmin命令登录终端
  • 我试图重置和刷新MySQL密码
  • 我的实例可以访问它
  • 一个快速自制的php脚本也可以使用它(使用mysqli)
  • 我在phpMyAdmin中尝试了基于套接字和基于tcp的访问
  • 我尝试了基于配置和基于http的身份验证,结果相同
相关配置如下:

$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '/var/run/mysqld/mysqld.sock';
$cfg['Servers'][$i]['connect_type'] = 'socket';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['ssl'] = true;
这是我的测试脚本,运行良好:

<?php
$_dbHost = 'localhost';
$_dbUser = 'root';
$_dbPass = 'mysupersecretrootpassword';
$_dbName = '';
$_dbPort = 0;
$_dbSock = '/var/run/mysqld/mysqld.sock';

$mysqli = new mysqli($_dbHost, $_dbUser, $_dbPass, $_dbName, $_dbPort, $_dbSock);

if ($mysqli->connect_errno) {
    echo "Error: Failed to make a MySQL connection, here is why: \n";
    echo "Errno: " . $mysqli->connect_errno . "\n";
    echo "Error: " . $mysqli->connect_error . "\n";
    exit;
} else {
    echo "Connection Successfull";

    $dbList = $mysqli->query('show databases;');
    echo "<pre>";
    var_dump($dbList->fetch_assoc());
    echo "</pre>";
}
?>

可能只有我一个人,可能我遗漏了什么,但在您的上层脚本中,您似乎没有传递一个用户,这与testscript中的情况不同,密码也是如此

$cfg['Servers'][$i]['ssl'] = true;
也许添加该选项会起作用。

设置:

  • Debian 8.2(杰西)
  • PHP版本:7.0.0-4 |来自Sid
  • lighttpd/1.4.35(ssl)
  • 10.0.19-MariaDB-log | mysqlnd 5.0.12-dev-20150407
使用套接字连接使用phpMyAdmin版本4.4.7、4.5.2和4.6.0-dev进行测试

遇到与您相同的问题,并跟踪到MySQL服务器的安全连接

临时修复:

在config.inc.php(phpMyAdmin)注释中

它确定是否将ssl用于phpMyAdmin和MySQL服务器之间的连接

另一方面:

Marc Delisle编写的修补程序很可能在该状态下抛出错误,正确的是:

    (mod_fastcgi.c.2695) FastCGI-stderr: PHP message: '#2006 - MySQL server has gone away'
然后,您的web服务器将记录如下内容:

这更像是一个假阳性

更新1:


MYSQLI_CLIENT_SSL常量似乎有问题,它在第176行的/libraries/dbi/DBIMysqli.class.php中设置$CLIENT_标志。一旦设置好这些,连接就会被断开。

只有在phpMyAdmin中使用身份验证方法“config”(我尝试过,但失败了,出现了相同的错误)时,才需要这样做。我使用登录掩码提供凭据。测试脚本硬编码更容易。此修补程序可能有助于调试:查看web服务器的错误日志以获取消息。迟做总比不做强。从4.6.1升级到4.6.4后,连接再次中断,并将“ssl”设置为“false”再次修复。至少这次错误消息包含SSL问题。
    error_log(var_export($this->_extension->getError(null), true));
    (mod_fastcgi.c.2695) FastCGI-stderr: PHP message: '#2006 - MySQL server has gone away'