前言

之前团队内合作开发时候,在数据库的共享连接方面做法通常是传到ECS服务器上,这次发现一个云端的数据库部署托管平台,而且发现有一核一G的免费mysql云端数据库平台

Aiven.io 是一个提供开源数据平台即服务的云平台,支持多种数据库、消息队列和流处理服务。

Aiven地址:https://aiven.io/


在 Aiven 获取云端数据库

本教程以 Mysql 数据库为例

先注册,注册可能需要挂梯子

image-20250520191622819

注册完后,点击 Create service,根据你需要的数据库服务类型选择,本教程以mysql为例

image-20250520192037739

选择免费的计划,可以看到是一核 1GB 开发够用了

image-20250520192143644

可以看到其云平台是在新加坡,但是实际上使用不需要梯子,按需要更改下面的 sql 数据库名

image-20250520192229411

之后就是一顿点击,按需要更改其中的内容,来到如下页面

b8e42f52b2db27d456861eea45b4ad0

其中 Service URL 就是你的整体Mysql各种连接信息,Database name 是你的数据库名,Host 就是主机名

Variable Description
USER_HOST Hostname for MySQL connection
USER_PORT Port for MySQL connection
USER_PASSWORD Password of your Aiven for MySQL connection
DB_NAME Database Name of your Aiven for MySQL connection

CA certificate 是 CA 证书,是需要下载下保存在你项目里的, 使用CA证书的SSL连接是连接到这个数据库的方式

等待其中的数据库从重载变成运行,就可以开始连接了,比较慢

到这里 Aiven 的申请云端数据库的部分就完成了,接下来就是连接了


连接到 Aiven 的云端数据库

使用 Navicat 连接

在 Navicat 的新建连接里,选择 SSL 连接,选择使用验证,把 CA 证书的地址放进去

image-20250520192944141

回到常规,主机就是你上面 Aiven 服务器信息页面中的 Host,账号密码也是一样的

image-20250520193116065

使用 DataGrip 和 IDEA 内置数据库插件工具连接

image-20250520193509862

这里都是一样的,选择使用SSL,然后上传你的 CA文件

image-20250520193545710

回到常规这里再编辑就可以了

image-20250520193607133

这里我配过了,就没有演示,和 Navicat 是一样的

使用 MySQL 命令行连接

这里可以参考 Aiven 的官方文档 https://aiven.io/docs/products/mysql/howto/connect-from-cli#using-mysql

在终端中,运行以下代码:

1
mysql --user 用户名 --password=密码 --host 你那个主机名Host --port 12100 数据库名

要确认连接是否正常工作,可以发出以下查询:

1
select 1 + 2 as three;

在你的 Spring Boot 项目中引入 Aiven 数据库

打开cmd,切换到 CA 证书的目录位置,输入以下命令

1
keytool -importcert -alias myca -file ca.pem -keystore truststore.jks -storepass changeit

该命令的作用是用于管理 Java 密钥库(JKS)的命令,主要作用是将 CA 证书(公钥)导入到 Java 信任库中,让 Java 应用程序信任该证书颁发机构(CA)签发的证书。

参数 作用
-importcert 指定执行证书导入操作。
-alias myca 为导入的证书设置别名(myca),用于在密钥库中标识该证书。
-file ca.pem 指定要导入的证书文件路径(ca.pem),通常是 PEM 格式的 CA 证书。
-keystore truststore.jks 指定目标密钥库文件(truststore.jks)。如果文件不存在,会创建一个新的。
-storepass changeit 指定密钥库的密码(changeit)。这是 Java 默认密钥库的初始密码。

当 Java 应用程序(如 HTTPS 客户端、SSL/TLS 连接)验证服务器证书时,会检查证书是否由信任库中的 CA 签发。通过导入 CA 证书,可以让 Java 信任该 CA 颁发的所有证书。如果应用程序连接 HTTPS 网站时出现 SSLHandshakeExceptionPKIX path building failed 错误,通常是因为 Java 不信任该网站的 CA 证书。导入对应的 CA 证书可以解决此问题。

输入以下命令验证证书是否导入成功

1
keytool -list -v -keystore truststore.jks -storepass changeit | grep myca

可以看到目录下的 pm.ca CA证书文件变成了一个 truststore.jks 文件

image-20250520194157286

之后打开你的 spring boot 项目配置文件,对 mysql 数据库部分的配置进行修改

1
2
3
4
5
# Aiven-Mysql Config
spring.datasource.url=jdbc:mysql://你的主机Host名:12100/数据库名?useSSL=true&requireSSL=true&enabledTLSProtocols=TLSv1.2&trustCertificateKeyStoreUrl=file:jks文件位置&trustCertificateKeyStorePassword=changeit
spring.datasource.username=你的用户名
spring.datasource.password=你的密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

如果你是 yml 配置

1
2
3
4
5
6
7
# Aiven-Mysql Config
spring:
datasource:
url: jdbc:mysql://你的主机Host名:12100/数据库名?useSSL=true&requireSSL=true&enabledTLSProtocols=TLSv1.2&trustCertificateKeyStoreUrl=file:jks文件位置&trustCertificateKeyStorePassword=changeit
username: 你的用户名
password: 你的密码
driver-class-name: com.mysql.cj.jdbc.Driver

接下来应该就可以了,启动项目,可以看到我的 Hibernate 已经为我自动创建表

image-20250520194332996