phpMyAdmin:无法登录MySQL服务器,没有错误代码


phpMyAdmin: Cannot log into the MySQL server no error code

我最近将mysql数据库复制到一个新的数据目录中,并更改了一些设置。

我还意外地删除了我的用户目录/home/user,并享受了博览会重新创建它的所有乐趣。

我现在可以在命令行上连接到mysql,但不能通过phpMyAdmin连接。我收到消息:

Cannot log in to the MySQL server

我以前见过这种情况,但并非没有预先准备好的错误代码#1045或#2002。

是否有任何关于此消息的日志或文档没有错误代码?

更新

phpMyAdmin安装在同一台服务器上,并在浏览器登录页面中提示web用户输入用户名/密码,提交正确的详细信息后,返回到此登录页面并显示错误消息。

我已尝试将/etc/phpMyAdmin/config.inc.php行更改为:

$cfg['Servers'][$i]['host'] = '127.0.0.1'; // previously 'localhost'

我也尝试过FLUSH PRIVILEGE,但没有成功。

根据我的说法,以下可能是问题和解决方法

原因:

-->保存php_session的路径未设置或设置不正确:

-->php没有足够的权限写入会话目录,或者该目录不存在。

解决方案:

  1. 要定义php_session目录,请在php.ini文件中添加以下行:

    session.save_path="/tmp/php_session/"

  2. 并将写入权限授予http服务器。

    大多数情况下,http服务器作为组守护进程中的用户守护进程运行。对于这种情况,以下命令将为您完成工作:

    chown -R :daemon /tmp/php_session

    chmod -R g+wr /tmp/php_session

  3. 重新启动http服务器。

试试看,让我知道


更新

我发现了这个:-

在某些罕见的情况下,如果您的MySQL进程已经存在很长时间而没有对您的密码进行任何更新,那么它可能会以phpMyAdmin无法验证的格式存储您的密码。这将导致您无法通过phpMyAdmin登录,即使使用正确的用户名和密码也是如此。在这些情况下,通过其他方式(例如命令行)更改MySQL密码通常就足够了,即使您将密码"更改"为相同的内容。

所以试着通过命令行将您的密码重置为

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

经过多次混淆,终于修复了它。

事实证明,我的my.cnf文件将地址绑定到服务器的内部网络IP。

bind-address = 192.168.etc

以前,在移动数据库(和套接字位置)之前,它还正确地连接了'localhost'(使用套接字),并允许从phpMyAdmin登录。

移动数据库后,套接字连接不起作用,将config.inc.php行从localhost更改为127.0.0.1会导致mysql连接TCP而不是套接字。这现在导致了与绑定地址的冲突:

$cfg['Servers'][$i]['host'] = '127.0.0.1'; // previously 'localhost'

删除绑定地址限制使我可以登录。


然而,一个更好的解决方案当然是修复插座连接。

经过一段时间对权限的争论和询问,有人帮我在mysqli.ini(phpMyAdmin用于连接数据库的扩展名)中找到了一个设置:

mysqli.default_socket = /new/location 

这修复了localhost套接字连接,我可以恢复my.cnf绑定地址,并恢复config.inc.php以再次使用'localhost'

在我的情况下,我只是将php版本从:5.6.6切换到7.0然后它什么都没登录。

只需将其切换回来,也许会重新启动服务器,它将支持在PHP 7.0 中工作