一尘不染

MySQL 8.0上的phpMyAdmin [重复]

mysql

这个问题已经在这里有了答案

在phpMyAdmin中使用SHA256设置用户密码后,访问被拒绝 (2个答案)

4个月前关闭。

更新
较新版本的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


阅读 293

收藏
2020-05-17

共1个答案

一尘不染

root 用户登录MySQL控制台:

root@9532f0da1a2a:/# mysql -u root -pPASSWORD

并使用其中的密码更改身份验证插件:

mysql> ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
Query OK, 0 rows affected (0.08 sec)

您可以在《 MySQL 8.0参考手册》上阅读有关首选身份验证插件的更多信息。

https://dev.mysql.com/doc/refman/8.0/zh-CN/upgrading-from-previous-
series.html#upgrade-caching-
sha2-password

它在 docker 化环境中完美运行:

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -p 3306:3306 -d mysql:latest

docker exec -it mysql bash

mysql -u root -pPASSWORD

ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';

exit

exit

docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

因此,您现在可以使用root / PASSWORD 登录http://
localhost:8080
上的phpMyAdmin。


mysql / mysql服务器

如果您正在使用mysql / mysql-server docker image

但是请记住,这只是开发环境中的“快速而肮脏的”解决方案。 更改MySQL Preferred Authentication
Plugin
是不明智的。

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -e MYSQL_ROOT_HOST=% -p 3306:3306 -d mysql/mysql-server:latest
docker exec -it mysql mysql -u root -pPASSWORD -e "ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';"
docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

在2018年10月4日更新了解决方案

通过取消注释中的default_authentication_plugin=mysql_native_password设置来更改MySQL默认身份验证插件
/etc/my.cnf

使用风险自负

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -e MYSQL_ROOT_HOST=% -p 3306:3306 -d mysql/mysql-server:latest
docker exec -it mysql sed -i -e 's/# default-authentication-plugin=mysql_native_password/default-authentication-plugin=mysql_native_password/g' /etc/my.cnf
docker stop mysql; docker start mysql
docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

在2019年1月30日更新了解决方法

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -e MYSQL_ROOT_HOST=% -p 3306:3306 -d mysql/mysql-server:latest
docker exec -it mysql sed -i -e 's/# default-authentication-plugin=mysql_native_password/default-authentication-plugin=mysql_native_password/g' /etc/my.cnf
docker exec -it mysql mysql -u root -pPASSWORD -e "ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';"
docker stop mysql; docker start mysql
docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

default_authentication_plugin

2020-05-17