spring boot连接mysql8.0

今天spring boot的项目数据库从mysql5.7换到mysql8.0,遇到点问题,特此记录下来

查看mysql的版本

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.12 |
+-----------+

修改mysql的依赖使用MySQL Connector/J

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.12</version>
</dependency>

数据源配置

# 数据源配置,请修改为实际配置
spring.datasource.url=jdbc:mysql://localhost:3306/bim?serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull&autoReconnect=true&useSSL=false&failOverReadOnly=false
spring.datasource.username=bimengine
spring.datasource.password=fgBQLZpgDaxH7xuu
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

项目启动如果报错

java.sql.SQLException: The connection property 'zeroDateTimeBehavior' acceptable values are: 'CONVERT_TO_NULL', 'EXCEPTION' or 'ROUND'. The value 'convertToNull' is not acceptable.

修改数据源配置

# 数据源配置,请修改为实际配置
spring.datasource.url=jdbc:mysql://localhost:3306/bim?serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL&autoReconnect=true&useSSL=false&failOverReadOnly=false
spring.datasource.username=bimengine
spring.datasource.password=fgBQLZpgDaxH7xuu
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

如果报错 

java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowe

连接数据库的url中,加上allowPublicKeyRetrieval=true参数

 

转载于:https://www.cnblogs.com/baby123/p/11419957.html

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服务也能解决问题。 如果以上步骤都尝试过后仍然存在问题,可能是防火墙规则、客户端证书管理或其他安全设置的问题,需要检查网络环境和服务器配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值