场景:MySQL8.0使用DBeaver连接本地数据库,报错:Public Key Retrieval is not allowed
结论:
方案一:命令行模式进入mysql输入以下命令
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
方案二:
1、本地使用工具连接:将驱动属性allowPublicKeyRetrieval置为true
2、若使用Jdbc的url连接报错,则在url中加入allowPublicKeyRetrieval=true。
jdbc:mysql://localhost:3306/test?useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=utf8
原因:mysql 8.0 默认使用 caching_sha2_password 身份验证机制 而原来5.7版本验证方式为mysql_native_password。因此从5.7版本升级过来的不会受到影响。