phpMyAdmin "Cannot log in to the MySQL server"与 PHP 7.0.0 RC7

标签 php mysql nginx mysqli phpmyadmin

设置:

  • Debian 杰西
  • 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 机器上升级到 PHP 7.0 RC7。

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

我还不能从这个连接失败的原因中追踪到任何更多信息(phpMyAdmin 的高度抽象类使它变得困难)。

非常感谢任何有关如何从 phpMyAdmin 获取更多信息的提示。

  • MySQL 服务器正在运行
  • 我可以使用 mysql 和 mysqladmin 命令登录终端
  • 我尝试重置和刷新 MySQL 密码
  • 我的 GOGS实例可以访问它
  • 一个快速的自制 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>";
}
?>

最佳答案

设置:

  • Debian 8.2(杰西)
  • PHP 版本:7.0.0-4 |来自席德
  • lighttpd/1.4.35 (ssl)
  • 10.0.19-MariaDB-日志 | mysqlnd 5.0.12-dev - 20150407

使用套接字连接测试 phpMyAdmin 版本 4.4.7、4.5.2 和 4.6.0-dev。

遇到了与您相同的问题,并追溯到与 MySQL-Server 的安全连接。

临时修复:

在你的 config.inc.php (phpMyAdmin) 评论中

$cfg['Servers'][$i]['ssl'] = true;

这决定了 ssl 是否用于 phpMyAdmin 和 MySQL-Server 之间的连接。

在旁边:

Marc Delisle 编写的补丁很可能会在该状态下引发错误,正确的是:

    error_log(var_export($this->_extension->getError(null), true));

然后您的网络服务器将记录如下内容:

    (mod_fastcgi.c.2695) FastCGI-stderr: PHP message: '#2006 - MySQL server has gone away'

在这种情况下更像是误报

更新 1:

/libraries/dbi/DBIMysqli.class.php 中设置 $client_flagsMYSQLI_CLIENT_SSL 常量似乎有问题第 176 行。一旦这些设置完成,连接就会断开。

关于phpMyAdmin "Cannot log in to the MySQL server"与 PHP 7.0.0 RC7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33897389/

相关文章:

php - 将数组作为数组而不是 PHP 中的 JSON 传递给 javascript

mysql - MySQL 数据库中一次可以创建的表数量是否有限制?

php - 带有查询生成器的表单生成器无法访问 Join 上的属性

nginx - Docker运行导致 "host not found in upstream"错误

performance - PHP 处理速度 apache 2.4 mpm-prefork mod_php 5.4 与 nginx 1.2.x PHP-FPM 5.4

php - mysql 按日期查询

php - 从 ZF2 中通过 REST 请求发送的多部分数据获取文件内容

php - Laravel 任务 - 上次运行时存储

Mysql 拆分行到 INSERT

ssl - 网页 gRPC + NGINX TLS 配置