在 phpMyAdmin 中使用 SHA256 设置用户密码后访问被拒绝

Posted

技术标签:

【中文标题】在 phpMyAdmin 中使用 SHA256 设置用户密码后访问被拒绝【英文标题】:Access denied after setting user's password with SHA256 in phpMyAdmin 【发布时间】:2020-04-08 10:05:45 【问题描述】:

在看到 phpMyAdmin 生成的默认密码使用 mysql_native_password 并且因此在使用相同密码时哈希没有改变后,我更新了一个用户的密码并将哈希设置为 SHA256。

当我尝试使用设置的密码再次登录时,它显示:

mysqli_real_connect(): (HY000/1045): Access denied for user 'xxxx'@'xxxx' (使用密码: YES)。

服务器使用 https,phpMyAdmin 也强制使用 SSL。

使用 SHA256 更改密码后,再次获得访问权限的唯一方法是手动设置密码并将密码插件恢复为 mysql_native_password。

如何使用 SHA256 密码登录 phpMyAdmin?

注意:如果我尝试使用相同的用户和 SHA256 密码登录到 mysql 控制台,它可以正常工作。

【问题讨论】:

@samuel-liew 你让我将此标记为另一个问题的重复,但我认为我没有足够的声誉将一个问题标记为没有接受答案的问题的重复。请帮忙? 【参考方案1】:

MySQL 最近更改了默认身份验证类型,并且在 MySQL 和 PHP 之间,此更改需要很长时间才能被 PHP 支持。旧方法是mysql_native_password,新方法是caching_sha2_password。从 7.4 开始的 PHP 版本支持新方法。由于这与 PHP 本身有关,支持此方法的 phpMyAdmin 需要您运行更新的 PHP 安装(phpMyAdmin 本身已准备好进行此更改,但您使用它的能力取决于您的 PHP 版本)。

你基本上有两种选择:

    将您的 PHP 升级到 7.4 或更高版本。 将用户的身份验证类型更改为旧的mysql_native_password。您可以通过编辑用户来做到这一点(从 phpMyAdmin 中的用户帐户选项卡,编辑用户,然后从下拉列表中更改身份验证方法)。

【讨论】:

这就是我在回答中所写的。但是你的为那些不想升级所有服务的人提供了另一种选择(MySQL,我的是 5.7,PHP 和 phpMyAdmin),所以非常感谢你的详细回答! 谢谢。是的,我看到你能够解决你的问题,但我认为你(和未来的海报)可能想知道究竟是什么导致了问题的细节。感谢您将此标记为已接受!【参考方案2】:

问题是 ubuntu 的 18.04.3 安装已经过时了 MySQL、PHP 和 phpMyAdmin。

为了解决这个问题,我需要将 MySQL 从 5.7 更新到 8,将 PHP 从 7.3 更新到 7.4,将 phpMyAdmin 更新到 4.9.2。

更新后,我可以使用具有caching_sha2_password 密码的用户登录,因此,对于那些与我有相同问题的用户,请检查您当前的 PHP、MySQL 和 phpMyAdmin 版本,并在需要时升级它们。 (请先备份,否则可能会丢失数据)

【讨论】:

【参考方案3】:

我知道答案就在那里,但我只想提供一些帮助我解决此问题的说明。第一:对我来说很难改变 mysql 的身份验证类型,我不能这样做,也不能从 MAC 系统更新 PHP,我不知道该怎么做,我只是不想搞砸一切,所以我做了什么?我从 BREW 安装了 php,并更改了 httpd.conf。

    安装 BREW。

    从 brew 安装 php。

    使用终端打开文件 [httpd.conf]:

    sudo nano /etc/apache2/httpd.conf
    

    转行:

    LoadModule php7_module libexec/apache2/libphp7.so
    

    并发表评论。

    插入这一行:

    LoadModule php7_module /usr/local/opt/php/lib/httpd/modules/libphp7.so
    

所以,您只需将 PHP MAC 系统更改为 PHP BREW - 即更新,新版本。

【讨论】:

这绝对是一个答案。但是你可以通过改写“我也是”的印象来改善它的感知。或者是另一个问题而不是答案。

以上是关于在 phpMyAdmin 中使用 SHA256 设置用户密码后访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

在 Ruby 中使用 HMAC SHA256

如何在php5.3.0中使用sha256

c语言中的SHA256实现

vue.js sha256加密

如何在Eclipse中使用sha1或sha256使用ESB工具?

尝试在 Visual Studio 中使用 SHA256 对程序集进行签名时出错