client does not support authentication protocol requested by server;

原因查找
通过查看网上别人遇到的相关问题,发现是由于navicat版本的问题,出现连接失败的原因:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。并提供了两种解决方案:

  • 升级navicat,由于navicat是收费的,个人感觉升级会比较麻烦点。
  • 把用户密码登录的加密规则还原成mysql_native_password这种加密方式,这里选择第二种解决方案。
docker exec -it mysql bash  #进入登录mysql

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;  #这里的password是你正在使用的密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';  #更新一下用户的密码这里的password为新的密码

FLUSH PRIVILEGES; 

原文地址:https://www.cnblogs.com/xiaojianliu/p/14823340.html