在连接MySQL数据库时,遇到如下报错信息:“Public Key Retrieval is not allowed”。
MySQL 8.0 默认使用 caching_sha2_password
身份验证机制(即从原来的 mysql_native_password
更改为 caching_sha2_password
)。从 MySQL 5.7 升级到 8.0 版本时,现有用户的身份验证方法不会改变,但新用户会默认使用新的 caching_sha2_password
。客户端可能不支持这种新的加密方式,从而导致连接失败。以下是解决该问题的两个方案:
在命令行模式下进入MySQL,输入以下命令修改用户的密码和加密方式:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
或者
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
执行以上命令后,即可正常连接数据库。
在配置数据源时,直接将属性allowPublicKeyRetrieval
设置为true
即可解决问题。例如,在JDBC URL中添加该参数:
jdbc:mysql://localhost:3306/yourDatabase?allowPublicKeyRetrieval=true&useSSL=false
通过以上两种方案,可以有效解决Public Key Retrieval is not allowed
报错问题,确保MySQL 8.0的正常连接。
allowPublicKeyRetrieval
可能会带来安全隐患,仅在确保安全的情况下使用。通过以上方法和注意事项,可以帮助大家顺利解决MySQL 8.0连接问题,提升数据库操作的稳定性和安全性。