phpMyAdmin "Cannot log in to the MySQL server" 与 PHP 7.0.0 RC7
phpMyAdmin "Cannot log in to the MySQL server" with PHP 7.0.0 RC7
设置:
- Debian 杰西
- mysqld 5.5.46-0+deb8u1
- nginx 1.8.0 来自 dotdeb.org
- php-fpm 7.0.0 RC7 来自 dotdeb.org
- phpMyAdmin 4.5.2
我最近在开发 linux 盒子上升级到 PHP 7.0 RC7。
从那时起,phpMyAdmin 只抛出 "Cannot log in to the MySQL server" 以及 "Connection for controluser as defined in your configuration failed.",而没有进一步的消息、错误编号或详细信息。
我还不能从这个连接失败的原因中找到更多信息(来自 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>";
}
?>
这可能只是我,也许我遗漏了一些东西,但在你的上部脚本中,你似乎没有像测试脚本中那样传递用户,密码也是如此。
$cfg['Servers'][$i]['user']='root';
$cfg['Servers'][$i]['password']='mysupersecretpassword';
也许添加它会起作用。
设置:
- 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-服务器的安全连接。
临时修复:
在您的 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:
MYSQLI_CLIENT_SSL 常量似乎有问题,它将 $client_flags 设置为 /libraries/dbi/DBIMysqli.class.php 在第 176 行。一旦设置这些,连接就会断开。
设置:
- Debian 杰西
- mysqld 5.5.46-0+deb8u1
- nginx 1.8.0 来自 dotdeb.org
- php-fpm 7.0.0 RC7 来自 dotdeb.org
- phpMyAdmin 4.5.2
我最近在开发 linux 盒子上升级到 PHP 7.0 RC7。
从那时起,phpMyAdmin 只抛出 "Cannot log in to the MySQL server" 以及 "Connection for controluser as defined in your configuration failed.",而没有进一步的消息、错误编号或详细信息。
我还不能从这个连接失败的原因中找到更多信息(来自 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>";
}
?>
这可能只是我,也许我遗漏了一些东西,但在你的上部脚本中,你似乎没有像测试脚本中那样传递用户,密码也是如此。
$cfg['Servers'][$i]['user']='root';
$cfg['Servers'][$i]['password']='mysupersecretpassword';
也许添加它会起作用。
设置:
- 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-服务器的安全连接。
临时修复:
在您的 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:
MYSQLI_CLIENT_SSL 常量似乎有问题,它将 $client_flags 设置为 /libraries/dbi/DBIMysqli.class.php 在第 176 行。一旦设置这些,连接就会断开。