Caused by: com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed NACOS 缺配置吗?
时间: 2024-09-11 22:11:37 浏览: 91
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.Transformer异常
5星 · 资源好评率100%
这个异常信息表明在尝试连接MySQL数据库时,由于配置不当导致了无法建立连接。具体来说,错误信息 "Public Key Retrieval is not allowed" 指的是MySQL的客户端不允许通过JDBC驱动程序检索公钥。这通常发生在客户端尝试使用密码进行加密连接,但是没有正确设置连接属性。
在使用MySQL Connector/J(JDBC驱动)时,如果需要使用加密连接(如TLS/SSL),需要确保在建立数据库连接时提供了正确的连接属性。对于早期版本的驱动,可能需要设置 `allowPublicKeyRetrieval=true` 属性来允许检索公钥,但在最新的Connector/J中,该行为已经默认关闭并且不推荐开启,因为它存在安全风险。
对于Nacos这类使用MySQL作为数据源的配置管理服务,通常需要在Nacos的配置文件中添加正确的数据库连接参数。例如,在`application.properties`文件中可能需要添加如下配置:
```
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://<host>:<port>/<database>?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=false
db.user=<username>
db.password=<password>
```
在上面的配置中,`allowPublicKeyRetrieval=false` 表示不允许检索公钥,这符合安全最佳实践。如果你的数据库连接设置为使用加密连接,那么应该确保服务器端和客户端的SSL/TLS设置是正确的,并且客户端驱动的配置应该避免检索公钥。
阅读全文