我已经安装了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版本的相对更新有关。
但是我对最高级的驱动程序和连接配置一无所知。
有人遇到过同样的问题并解决了吗?:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
以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来源:stack overflow