navicat连接Docker下载的MySQL报错:Client does not support authentication protocol requested by server

一、问题描述:

今天在虚拟服务器上用Docker下载了MySQL镜像,启动容器后用Navicat连接时报错:

图1.Navicat连接MySQL时报错

二、报错原因:

在网上查了相关信息,发现是Navicat版本与MySQL版本的不匹配所造成。MySQL8之前的加密规则是mysql_native_password,但是在MySQL8之后,加密规则变成了caching_sha2_password,Navicat低版本不支持了,要么升级Navicat,要么把用户密码登录的加密规则还原成mysql_native_password这种加密方式。

三、解决步骤:

    1、查询当前docker容器列表,找到容器对应id或name:docker ps -a

    2、进入docker中的MySQL容器:docker exec -it MySQL容器的id或name  bash

    3、进入容器后,输入用户和密码:mysql -u root -p

    4、输入以下两条指令更改加密规则:

        4.1 更新用户密码:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';

        4.2 更新用户密码:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';

        4.3 刷新权限:FLUSH PRIVILEGES; 

    5、更改成功后用Navicat连接即可。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容