fix: 修复部分环境 Public Key Retrieval is not allowed 错误

MySQL 8.0+ 默认使用 caching_sha2_password 认证插件,这种认证方式有两种工作模式:
- 如果使用SSL连接,直接通过安全通道传输密码
- 如果不使用SSL连接,客户端需要从服务器获取RSA公钥来加密密码
当设置 useSSL=false 但未明确允许公钥检索时,JDBC驱动出于安全考虑会阻止这种操作(报错:Public Key Retrieval is not allowed)。
生产环境中,应优先考虑:
1. 启用 SSL/TLS 加密连接
2. 如需禁用 SSL,改用 mysql_native_password 认证
3. 仅在受控环境(如开发环境)中使用 allowPublicKeyRetrieval=true
This commit is contained in:
xiongxiaoyang 2025-03-27 22:24:56 +08:00
parent d4fa0abc4e
commit 0e156c04b4

View File

@ -11,13 +11,13 @@ dataSources:
ds_1: ds_1:
dataSourceClassName: com.zaxxer.hikari.HikariDataSource dataSourceClassName: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.cj.jdbc.Driver driverClassName: com.mysql.cj.jdbc.Driver
jdbcUrl: jdbc:mysql://localhost:3306/novel_plus?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai jdbcUrl: jdbc:mysql://localhost:3306/novel_plus?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root username: root
password: test123456 password: test123456
ds_2: ds_2:
dataSourceClassName: com.zaxxer.hikari.HikariDataSource dataSourceClassName: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.cj.jdbc.Driver driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/information_schema?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai url: jdbc:mysql://localhost:3306/information_schema?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root username: root
password: test123456 password: test123456
# 规则配置 # 规则配置