更新
较新版本的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
发布于 2018-05-20 16:59:15
以根用户身份登录到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参考手册》
它在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
因此您现在可以使用超级用户/密码登录到http://localhost:8080上的phpMyAdmin
mysql/mysql-server
如果您使用的是mysql/mysql-server docker镜像
但请记住,在开发环境中,它只是一个“又快又脏”的解决方案。更改是不明智的。
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
默认身份验证插件
使用风险自负
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
2021年9月13日上的更新解决方案
ALTER USER 'root'@'localhost‘通过’mysql_native_password‘标识为密码;
发布于 2018-04-20 21: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
发布于 2019-05-11 04:34:10
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootpassword';
通过命令行登录,之后就可以工作了。
https://stackoverflow.com/questions/49948350
复制