spring boot链接mysql8.0过段时间就会提示Public Key Retrieval is not allowed错误
时间: 2024-11-21 08:23:21 浏览: 24
Spring Boot连接MySQL 8.0时遇到"Public Key Retrieval is not allowed"错误通常是由于SSL/TLS安全设置导致的,MySQL服务器需要验证客户端提供的证书。当你首次尝试通过SSL连接时,它会检查你的应用程序的公钥,如果没有提供或权限不足,就会抛出这个错误。
解决这个问题通常有以下几个步骤:
1. **配置Spring Boot**: 在application.properties或application.yml文件中添加数据库连接相关的SSL属性,例如:
```properties
spring.datasource.url=jdbc:mysql://your_host:port/your_db?useSSL=true&serverTimezone=UTC
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
```
确保`useSSL=true`启用SSL连接。
2. **提供信任证书**: 如果你的应用是在本地运行,你可能需要生成一个自签名的SSL证书并将其导入到MySQL的ca-certificates目录。如果不是,你应该从MySQL官网下载官方的证书链文件,并放置在合适的位置。
3. **更新JDBC connector**: 有时问题也可能是因为使用的JDBC驱动版本不支持SSL,确保你正在使用的MySql Connector/J或MariaDB Connector/J是最新且兼容的版本。
4. **更改SSL Mode**: MySQL 8.0默认开启了更严格的SSL模式,你可以尝试设置`ssl-mode=VERIFY_CA`或`ssl-mode=VERIFY_IDENTITY_FULL`。
5. **重启服务**: 有时候简单地重启Spring Boot应用和MySQL服务也能解决问题。
如果以上步骤都尝试过后仍然存在问题,可能是防火墙规则、客户端证书管理或其他安全设置的问题,需要检查网络环境和服务器配置。
阅读全文