MySQL 8.0 上的 phpMyAdmin

84

更新
新的phpMyAdmin版本已解决此问题。我已经成功测试过phpMyAdmin 5.0.1。


我已安装了MySQL 8.0服务器和phpMyAdmin,但在尝试从浏览器访问时出现以下错误:

#2054 - The server requested authentication method unknown to the client
mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client

我想这可能与MySQL采用了强密码和相对较新的版本有关。

但是我并不了解最先进的驱动程序和连接配置。

是否有人遇到过同样的问题并解决了呢? :D


1
你正在使用哪个版本的PHP?我敢打赌这是一个驱动级别的问题,因为phpMyAdmin正在使用mysqli - tadman
PHP 版本 7.0.27-0 - Lucas Noetzold
18个回答

5
我通过以下步骤解决了这个问题:
  1. 进入系统偏好设置 -> mysql

  2. 选择 "初始化数据库" 并输入新的根密码,选择 "使用传统的密码加密"。

  3. 使用新密码登录 phpmyadmin。


OP并未指明他们正在使用Mac电脑;但是他告诉我们他使用了Linux的apt-get来安装。而你的答案适用于MacOS系统。 - Peter

3
如@kgr所述,MySQL 8.0.11对认证方法进行了一些更改。我已经在phpMyAdmin上报告了一个bug:https://github.com/phpmyadmin/phpmyadmin/issues/14220。MySQL 8.0.4-rc对我来说运行良好,我觉得MySQL在补丁级别的发布中做出这样的更改有点荒谬。

2

使用 mysql_native_password 选项创建另一个用户:

在终端中执行以下命令:

mysql> CREATE USER 'su'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';
mysql> GRANT ALL PRIVILEGES ON * . * TO 'su'@'localhost';
mysql> FLUSH PRIVILEGES;

1
我使用MySQL 8.0.12解决了这个问题,运行以下命令:

mysql_upgrade -u root

1

1

在我的情况下,为了解决这个问题,我更喜欢创建一个新用户来使用PhpMyAdmin,因为修改root用户会导致其他应用程序(如MySQL WorkBench)的本地登录问题。

这是我所做的:

  • 使用root用户登录MySQL控制台:mysql -u root -p,输入密码。
  • 让我们在MySQL shell中创建一个新用户:
CREATE USER 'newMySqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlNewUsernamePassword';
  • 此时,newMysqlUsername没有任何权限来处理数据库。因此需要为用户提供访问所需信息的权限。
GRANT ALL PRIVILEGES ON * . * TO ' newMySqlUsername'@'localhost';
  • 一旦您确定了要为新用户设置的权限,请务必重新加载所有权限。
FLUSH PRIVILEGES;
  • 输入quit\q退出登录,您的更改现在已生效,我们可以使用新用户登录PhpMyAdmin,并且它将具有访问数据库的权限。

  • 您也可以使用终端中的此命令重新登录:

mysql -u newMySqlUsername -p

0

如果您在Windows上运行,可以通过重新配置安装来更改身份验证。只需运行MSI文件即可。它会要求将默认身份验证更改为传统模式,然后您可以选择此选项以更改为传统身份验证。


0

我使用了 ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY 'PASSWORD';,它起作用了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接