如何在没有密码的 SSL 模式下从 Spring Boot 应用程序连接 mariadb

问题描述

我已将 MariaDB 作为 pod 部署到 k8s 集群中。 DB 启用 SSL 模式,这将不允许用户/客户端在没有证书的情况下登录到 DB。所以我们不能使用用户名和密码登录数据库。我们必须只使用证书才能这样做。

用户创建声明:

CREATE USER 'test'@'%' REQUIRE X509;
GRANT ALL ON *.* TO 'test'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

所以我们在创建用户时没有使用任何密码。

登录数据库

MysqL -utest --ssl-key=/keys/peer-key.pem --ssl-cert=/certificates/peer.pem --ssl-ca=/ca/cacerts.pem

所以我尝试在 spring boot 应用端启用 mariadb 上的 SSL 模式,如下所示:

spring.datasource.url=jdbc:mariadb://IP:3306/myDB?useSSL=true&trustServerCertificate=true&serveRSSlCert=/certificates/peer.pem&disableSslHostnameVerification=true
spring.datasource.username=test
spring.datasource.password=
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver

但我收到一个错误

Current charset is UTF-8. If password has been set using other charset,consider using option 'passwordCharacterEncoding'

版本:

mariadb: MysqL  Ver 15.1 distrib 10.4.12-MariaDB,for Linux (x86_64) using readline 5.1
mariadb-java-client: 2.7.2
spring boot: 2.3.4

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)