首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MySQL 8.0上的phpMyAdmin

MySQL 8.0上的phpMyAdmin
EN

Stack Overflow用户
提问于 2018-04-21 03:15:21
回答 17查看 176.2K关注 0票数 81

更新

较新版本的phpMyAdmin解决了这个问题。我已经成功地使用phpMyAdmin 5.0.1进行了测试

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

代码语言:javascript
复制
#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

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2018-05-21 00:59:15

用户身份登录到MySQL控制台:

代码语言:javascript
复制
root@9532f0da1a2a:/# mysql -u root -pPASSWORD

并使用此处的密码更改身份验证插件:

代码语言:javascript
复制
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/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password

它在docker化环境中运行良好:

代码语言:javascript
复制
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

因此您现在可以使用超级用户/密码登录到http://localhost:8080上的phpMyAdmin

mysql/mysql-server

如果您使用的是mysql/mysql-server docker镜像

但请记住,在开发环境中,它只是一个“又快又脏”的解决方案。更改是不明智的。

代码语言:javascript
复制
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日的更新解决方案

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

使用风险自负

代码语言:javascript
复制
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日更新的解决方法

代码语言:javascript
复制
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

2021年9月13日上的更新解决方案

ALTER USER 'root'@'localhost‘通过’mysql_native_password‘标识为密码;

  • 完全带引号*
票数 119
EN

Stack Overflow用户

发布于 2018-04-21 05:46:52

新的MySQL 8.0.11使用caching_sha2_password作为默认身份验证方法。我认为phpMyAdmin无法理解这种身份验证方法。您需要使用一种较旧的身份验证方法创建用户,例如CREATE USER xyz@localhost IDENTIFIED WITH mysql_native_password BY 'passw0rd'

更多信息在这里https://dev.mysql.com/doc/refman/8.0/en/create-user.html和这里https://dev.mysql.com/doc/refman/8.0/en/authentication-plugins.html

票数 32
EN

Stack Overflow用户

发布于 2019-05-11 12:34:10

代码语言:javascript
复制
 mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootpassword';

通过命令行登录,之后就可以工作了。

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49948350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档