问题点:
数据库的加密方式( caching_sha2_password )问题造成的。
当然,你有义务去检查的账号密码,至少在命令行里可以正常使用。还有mysql.user的host里是 %(代表已开启远程链接)。
参考链接 中第四点
select host,user,plugin,authentication_string from mysql.user;
看下plugin的加密方式,mysql 8 之后使用了caching_sha2_password,而非比较传统的mysql_native_password,所以如下更新
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; ### 把root改成123456 mysql的登录密码
flush privileges; ### 刷新生效
这样子,root就可以链接了,更好的做法是选择你相应的数据库user 而不是root。
此外,版本低于12的Navicat可以连接了。
当然,此外是否配置了正确的端口映射/防火墙等其他问题,也是需要注意。