在 phpMyAdmin 中使用 SHA256 设置用户密码后访问被拒绝
Access denied after setting user's password with SHA256 in phpMyAdmin
在看到 phpMyAdmin 生成的默认密码使用了 mysql_native_password 并且因此当使用相同的密码时哈希没有改变后,我更新了一个用户的密码并将哈希设置为 SHA256。
当我尝试使用设置的密码再次登录时,它显示:
mysqli_real_connect(): (HY000/1045): Access denied for user 'xxxx'@'xxxx' (using password: YES).
服务器使用 https,phpMyAdmin 也强制使用 SSL。
使用 SHA256 更改密码后,再次获得访问权限的唯一方法是手动设置密码并将密码插件恢复为 mysql_native_password。
如何使用 SHA256 密码登录 phpMyAdmin?
注意:如果我尝试使用相同的用户和 SHA256 密码登录 mysql 控制台,它工作正常。
问题是 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 版本并在需要时升级它们。 (请先备份,否则可能会丢失数据)
MySQL 最近更改了默认身份验证类型,在 MySQL 和 PHP 之间,此更改花了很长时间才得到 PHP 的支持。旧方法是 mysql_native_password
,新方法是 caching_sha2_password
。 PHP 7.4 开始的版本支持新方法。由于这与 PHP 本身有关,支持此方法的 phpMyAdmin 需要您 运行 更新 PHP 安装(phpMyAdmin 本身已准备好进行此更改,但您能否使用它取决于您的PHP 版)。
你基本上有两个选择:
- 将您的 PHP 升级到 7.4 或更新版本。
- 将用户的身份验证类型更改为旧的
mysql_native_password
。您可以通过编辑用户来做到这一点(从 phpMyAdmin 中的用户帐户选项卡,编辑用户,然后从下拉列表中更改身份验证方法)。
我知道上面已经有了答案,但我只想提供一些说明来帮助我解决这个问题。首先:更改 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 生成的默认密码使用了 mysql_native_password 并且因此当使用相同的密码时哈希没有改变后,我更新了一个用户的密码并将哈希设置为 SHA256。
当我尝试使用设置的密码再次登录时,它显示:
mysqli_real_connect(): (HY000/1045): Access denied for user 'xxxx'@'xxxx' (using password: YES).
服务器使用 https,phpMyAdmin 也强制使用 SSL。
使用 SHA256 更改密码后,再次获得访问权限的唯一方法是手动设置密码并将密码插件恢复为 mysql_native_password。
如何使用 SHA256 密码登录 phpMyAdmin?
注意:如果我尝试使用相同的用户和 SHA256 密码登录 mysql 控制台,它工作正常。
问题是 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 版本并在需要时升级它们。 (请先备份,否则可能会丢失数据)
MySQL 最近更改了默认身份验证类型,在 MySQL 和 PHP 之间,此更改花了很长时间才得到 PHP 的支持。旧方法是 mysql_native_password
,新方法是 caching_sha2_password
。 PHP 7.4 开始的版本支持新方法。由于这与 PHP 本身有关,支持此方法的 phpMyAdmin 需要您 运行 更新 PHP 安装(phpMyAdmin 本身已准备好进行此更改,但您能否使用它取决于您的PHP 版)。
你基本上有两个选择:
- 将您的 PHP 升级到 7.4 或更新版本。
- 将用户的身份验证类型更改为旧的
mysql_native_password
。您可以通过编辑用户来做到这一点(从 phpMyAdmin 中的用户帐户选项卡,编辑用户,然后从下拉列表中更改身份验证方法)。
我知道上面已经有了答案,但我只想提供一些说明来帮助我解决这个问题。首先:更改 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 - 即已更新的新版本。