关于高并发接口,使用hikari出现连接失败问题
Public Key Retrieval is not allowed
mysql8的连接方式 caching_sha2_password
mysql5.多的版本是 mysql_native_password
解决方案
可以在连接字符串中通过 ServerRSAPublicKeyFile 指定服务器的 RSA 公钥。
获取Mysql服务器的工钥,使用如下命令
1
2mysql> SHOW VARIABLES LIKE 'caching_sha2_password_public_key_path';
如果没有找到公钥文件,你可以手动生成一个:
1
2
3
openssl genrsa -out server-key.pem 2048
openssl rsa -in server-key.pem -pubout > server-public-key.pem将公钥文件复制到客户端:
将服务器的 RSA 公钥文件(例如
server-public-key.pem
)复制到你的客户端机器(即运行应用程序的机器)上,确保应用程序能够访问该文件。将公钥文件复制到客户端:
将服务器的 RSA 公钥文件(例如
server-public-key.pem
)复制到你的客户端机器(即运行应用程序的机器)上,确保应用程序能够访问该文件。1
2
3
4
5spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&ServerRSAPublicKeyFile=/path/to/server-public-key.pem
username: yourUsername
password: yourPassword
结论 使用这种方式可以避免潜在的中间人攻击或者数据泄漏。
设置AllowPublicKeyRetrieval=True参数以允许客户端从服务器获取公钥。
datasource: url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&allowPublicKeyRetrieval=true username: yourUsername password: yourPassword hikari: maximum-pool-size: 10 # 可根据需求调整连接池的大小
allowPublicKeyRetrieval=true ,设置这个,但是会导致会被中间人攻击,
如何避免攻击
将useSSL=ture,但这样就会降低速度。
什么是中间人攻击
在公钥检索过程中,如果没有额外的加密措施(如使用 SSL/TLS),公钥检索请求可能会被拦截和篡改。这种攻击称为中间人攻击(MITM)。攻击者可以拦截公钥,并使用其私钥解密传输的敏感信息。
- Post title:关于高并发接口,使用hikari出现连接失败问题
- Post author:秋水
- Create time:2024-09-08 21:55:44
- Post link:tai769.github.io2024/09/08/关于高并发接口,使用hikari出现连接失败问题/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.