设置:
- 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_flags 的 MYSQLI_CLIENT_SSL 常量似乎有问题第 176 行。一旦这些设置完成,连接就会断开。
关于phpMyAdmin "Cannot log in to the MySQL server"与 PHP 7.0.0 RC7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33897389/