全部产品
Search
文档中心

密钥管理服务:凭据 JDBC 客户端

更新时间:Sep 21, 2026

针对使用 JDBC 方式连接数据库的业务场景,你将数据库账号密码保存在 RDS 凭据或通用凭据后,应用可以集成凭据 JDBC 客户端,通过在 KMS 托管的凭据完成数据库连接身份鉴别。本文介绍如何安装和使用凭据 JDBC 客户端。

SDK介绍

凭据 JDBC 客户端是针对使用 JDBC 方式连接数据库的业务场景,该客户端自动从 KMS 获取凭据用于数据库连接身份鉴别,更便于你集成。其他获取和使用凭据的业务场景推荐你优先使用凭据客户端,其次是 KMS 实例 SDK 和阿里云 SDK。详细信息,请参见SDK参考。

说明

如果你需要对凭据进行管控类操作,仅支持使用阿里云 SDK。

凭据 JDBC 客户端具有以下功能特性:

  • 支持 Java 数据库连接(Java Database Connectivity,简称 JDBC),包括在数据库连接池(例如 c3p0 和 DBCP)和数据源中通过 JDBC 连接数据库。

  • 支持 MySQL、SQL Server、PostgreSQL 和 MariaDB 四种数据库类型。

  • 支持用户自定义凭据刷新频率。

注意事项

  • 支持的凭据类型:通用凭据、RDS凭据。

    • 如果是 RDS 凭据,建议你使用双账号托管的 RDS 凭据。

    • 如果是通用凭据,凭据值为 JSON 格式且内容格式如下。

      {
          "AccountName":"<您的数据库账号用户名>",
          "AccountPassword":"<您的数据库账号密码>"
      }
  • 支持的开发语言:Java(Java 8 及以上版本)。

  • 支持的数据库连接池:c3p0、DBCP、HikariCP 和 Druid。

步骤一:创建访问凭证

场景一:通过共享网关获取凭据值

网络类型为公网或VPC网络。支持ECS实例RAM角色、RamRoleArn、STS Token、AccessKey等基于RAM的身份认证方式。详细内容,请参见管理访问凭据。

ECS实例RAM角色

ECS RAM 角色是指为 ECS 实例授予的 RAM 角色,该 RAM 角色是一个受信服务为云服务器的普通服务角色。使用实例 RAM 角色可以实现在 ECS 实例内部无需配置 AccessKey 即可获取临时访问凭证(STS Token),从而调用 KMS 的 OpenAPI。

具体操作,请参见实例RAM角色。

  1. 登录RAM 控制台,创建可信实体为阿里云服务的 RAM 角色。

    • 信任主体类型:选择云服务器。

    • 信任主体名称:选择云服务器 ECS。

  2. 授予 RAM 角色访问 KMS 的权限。

    • 方式一:设置基于身份的策略

      单击 RAM 角色操作列的新增授权,直接绑定 KMS 内置系统权限策略到 RAM 角色。KMS 内置系统权限策略,请参见密钥管理服务系统权限策略参考。

      说明

      同时支持自定义权限策略,具体操作请参见创建自定义权限策略。

    • 方式二:设置基于资源的策略

      KMS 支持基于资源的策略,即为单个密钥和凭据设置访问权限,用于控制哪些阿里云账号、RAM 用户、RAM 角色有权限来管理或使用 KMS 密钥、凭据。详细介绍,请参见密钥策略、凭据策略。

  3. 登录ECS 管理控制台,将 RAM 角色授予 ECS 实例。

RamRoleArn

RAM 用户或云产品可以通过扮演角色的方式获取临时权限(STS Token),而不是直接使用长期密钥,降低了密钥泄露的风险。例如,在临时的数据处理任务中,RAM 用户或云产品临时扮演一个具有特定 RamRoleArn 的角色,完成任务后角色权限被收回,减少泄露风险。

  1. 创建用户 AK

    1. 登录RAM 控制台,在身份管理 > 用户页面,单击目标 RAM 用户名称。

    2. 为 RAM 用户分配系统策略 AliyunSTSAssumeRoleAccess或包含权限操作sts:AssumeRole的自定义策略。

    3. 在凭证管理标签页的AccessKey区域,单击创建 AccessKey。

  2. 创建 RAM 角色并授权:

    1. 在身份管理 > 角色页面,单击创建角色具体操作,请参见创建RAM角色。

    2. 授予 RAM 角色访问 KMS 的权限。

      • 方式一:设置基于身份的策略

        单击 RAM 角色操作列的新增授权,直接绑定 KMS 内置系统权限策略到 RAM 角色。KMS 内置系统权限策略,请参见密钥管理服务系统权限策略参考。

        说明

        同时支持自定义权限策略,具体操作请参见创建自定义权限策略。

      • 方式二:设置基于资源的策略

        KMS 支持基于资源的策略,即为单个密钥和凭据设置访问权限,用于控制哪些阿里云账号、RAM 用户、RAM 角色有权限来管理或使用 KMS 密钥、凭据。详细介绍,请参见密钥策略、凭据策略。

  3. 获取目标 RAM 角色的 RamRoleArn。具体操作,请参见查看RAM角色。

    1. 在身份管理 > 角色页面,单击目标角色名称。

    2. 进入角色详情页,在ARN区域可获取 RamRoleArn 信息。

      说明

      RamRoleArn 是 RAM 角色的 ARN 信息,即需要扮演的角色 ID。格式为 acs:ram::$accountID:role/$roleName。$accountID 为阿里云账号 ID。$roleName 为 RAM 角色名称。

STS Token

通过 STS 服务为 RAM 用户或 RAM 角色颁发一个临时访问凭证(STS Token),可以在限定的有效期内,以符合策略规定的权限访问 KMS,超过有效期后,该凭证自动失效。

  1. 登录RAM 控制台,创建 RAM 用户或 RAM 角色。具体操作,请参见创建RAM用户、创建RAM角色。

  2. 为 RAM 用户或 RAM 角色授予AliyunSTSAssumeRoleAccess权限。具体操作,请参见管理RAM用户的权限、管理RAM角色的权限。

  3. 授予 RAM 用户或 RAM 角色访问 KMS 的权限。

    • 方式一:设置基于身份的策略

      单击 RAM 角色或用户操作列的新增授权,直接绑定 KMS 内置系统权限策略。KMS 内置系统权限策略,请参见密钥管理服务系统权限策略参考。

      说明

      同时支持自定义权限策略,具体操作请参见创建自定义权限策略。

    • 方式二:设置基于资源的策略

      KMS 支持基于资源的策略,即为单个密钥和凭据设置访问权限,用于控制哪些阿里云账号、RAM 用户、RAM 角色有权限来管理或使用 KMS 密钥、凭据。详细介绍,请参见密钥策略、凭据策略。

  4. 使用 RAM 用户或 RAM 角色调用 STS 服务的 AssumeRole 接口获取 STS 临时访问凭证。具体操作,请参见AssumeRole - 获取扮演角色的临时身份凭证。

AccessKey

警告

阿里云账号默认有所有资源的 Administrator 权限且不可修改,为了确保资源安全,建议使用 RAM 用户创建 AccessKey,并根据需求进行最小化授权。

  1. 登录RAM 控制台,在页用户面,单击目标 RAM 用户名称。

  2. 在凭证管理标签页的AccessKey区域,单击创建 AccessKey。

  3. 授予 RAM 用户访问 KMS 的权限。

    • 方式一:设置基于身份的策略

      单击 RAM 用户操作列的新增授权,直接绑定 KMS 内置系统权限策略到 RAM 角色。KMS 内置系统权限策略,请参见密钥管理服务系统权限策略参考。

      说明

      同时支持自定义权限策略,具体操作请参见创建自定义权限策略。

    • 方式二:设置基于资源的策略

      KMS 支持基于资源的策略,即为单个密钥和凭据设置访问权限,用于控制哪些阿里云账号、RAM 用户、RAM 角色有权限来管理或使用 KMS 密钥、凭据。详细介绍,请参见密钥策略、凭据策略。

ClientKey(不推荐)

  1. 登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击应用接入 > 访问控制(原接入点)。

  2. 创建网络规则(非必须)。

    说明

    如果不需要基于来源 IP 限制访问,则不需要设置网络规则。但为了更高的安全性,通常建议合理设置。

    1. 单击网络规则页签,然后单击创建网络规则。

    2. 在创建网络规则面板,网络类型选择Public,填写允许访问的源IP地址后,单击确定。

  3. 创建权限策略。

    1. 单击权限策略,然后单击创建权限策略。

    2. 在创建权限策略面板,按照下方提示完成共享网关配置后,单击确定。

      1. 作用域:KMS共享网关

      2. 允许访问的资源:勾选需要访问的凭据

      3. 网络控制规则(非必须):勾选步骤二创建网络规则。

  4. 创建应用接入点 AAP。

    1. 单击应用接入页签,然后单击创建应用接入点。

    2. 在创建应用接入点面板,创建模式选择标准创建,然后按照下方提示完成各项配置。

      配置项

      说明

      认证方式

      选择 ClientKey

      Client Key加密口令

      设置 8~64 位包含数字、英文大小写、特殊字符~!@#$%^&*?_-的字符串

      有效期

      重要

      推荐设置为 1 年,以降低 ClientKey 被泄露的风险。请务必在到期前更换,以免无法正常访问 KMS。具体操作,请参见更换ClientKey。

      权限策略

      选择步骤三创建的权限策略。

    3. 单击确定,浏览器会自动下载ClientKey。ClientKey包含以下内容:

      • 应用身份凭证内容(ClientKeyContent):文件名默认为clientKey_****.json

      • 凭证口令(ClientKeyPassword):文件名默认为clientKey_****_Password.txt。

场景二:通过专属网关获取凭据值(不推荐)

网络类型为KMS私有网络。访问凭证仅支持ClientKey。

ClientKey 支持快速创建和标准创建两种方式。关于 ClientKey 的详细介绍,请参见应用接入点概述、创建应用接入点。

  • 方式一:快速创建

    操作便捷高效,适用于快速测试和开发场景,该方式创建的访问凭证可以访问 KMS 实例的全部资源。

    1. 登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击应用接入 > 访问控制(原接入点)。

    2. 在应用接入页签,单击创建应用接入点,在创建应用接入点面板完成各项配置。

      配置项

      说明

      创建模式

      选择快速创建。

      作用域(KMS实例)

      选择应用要访问的KMS实例。

      应用接入点名称

      自定义应用接入点的名称。

      认证方式

      默认为ClientKey,不支持修改。

      加密算法

      选择用于加密 ClientKey 的加密算法。可选 TripleDES-CBC 或 RC2-CBC,默认为 RC2-CBC。

      说明

      RC2-CBC 适用于大多数运行环境,推荐优先使用;若您的运行环境有更严格的算法要求而不支持 RC2-CBC,请选择 TripleDES-CBC

      默认权限策略

      默认为key/*secret/*,不支持修改。即应用可以访问指定KMS实例中的所有密钥和凭据。

    3. 单击确定,浏览器会自动下载ClientKey。ClientKey包含以下内容:

      • 应用身份凭证内容(ClientKeyContent):文件名默认为clientKey_****.json

      • 凭证口令(ClientKeyPassword):文件名默认为clientKey_****_Password.txt。

  • 方式二:标准创建

    若希望对资源设置更精细化的访问权限,建议使用标准创建。

    1. 请参考创建应用接入点中的标准创建方式,创建用于访问专属网关的 ClientKey。关键配置说明如下:

      1. 配置网络规则时,网络类型选择Private。

      2. 配置权限规则作用域时,请选择对应的KMS 实例 ID。

    2. 创建完成后,浏览器会自动下载 ClientKey。ClientKey 包含以下内容:

      • 应用身份凭证内容(ClientKeyContent):文件名默认为clientKey_****.json

      • 凭证口令(ClientKeyPassword):文件名默认为clientKey_****_Password.txt。

步骤二:安装客户端

通过 Maven 安装凭据 JDBC 客户端。

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-secretsmanager-jdbc</artifactId>
    <version>x.x.x</version>
</dependency>
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>4.x.x</version>
</dependency>
说明

建议你安装最新版本的 SDK。访问aliyun-secretsmanager-jdbc获取更多安装信息和源代码。

步骤三:通过secretsmanager.properties配置文件初始化客户端

在项目中新增配置文件 secretsmanager.properties,不同访问凭证需要配置的参数不同。

AccessKey

## 访问凭据类型
credentials_type=ak
## Access Key Id
credentials_access_key_id=#credentials_access_key_id#
## Access Key Secret
credentials_access_secret=#credentials_access_secret#
## 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
## 用户自定义的刷新频率, 默认为6小时,最小值为5分钟,单位为毫秒
refresh_secret_ttl=21600000

RAMRoleArn

## 访问凭据类型
credentials_type=ram_role
## Access Key Id
credentials_access_key_id=#credentials_access_key_id#
## Access Key Secret
credentials_access_secret=#credentials_access_secret#
## 访问凭据Session名称
credentials_role_session_name=#credentials_role_session_name#
## RAM Role ARN
credentials_role_arn=#credentials_role_arn#
## 访问凭据Policy
credentials_policy=#credentials_policy#
## 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
## 用户自定义的刷新频率, 默认为6小时,最小值为5分钟,单位为毫秒
refresh_secret_ttl=21600000

ECS实例RAM角色

## 访问凭据类型
credentials_type=ecs_ram_role
## ECS RAM Role名称
credentials_role_name=#credentials_role_name#
## 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
## 用户自定义的刷新频率, 默认为6小时,最小值为5分钟,单位为毫秒
refresh_secret_ttl=21600000

STS Token

## 访问凭据类型
credentials_type=sts
## Access Key Id
credentials_access_key_id=#credentials_access_key_id#
## Access Key Secret
credentials_access_secret=#credentials_access_secret#
## 访问凭据Session名称
credentials_role_session_name=#credentials_role_session_name#
## RAM Role ARN
credentials_role_arn=#credentials_role_arn#
## 访问凭据Policy
credentials_policy=#credentials_policy#
## 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
## 用户自定义的刷新频率, 默认为6小时,最小值为5分钟,单位为毫秒
refresh_secret_ttl=21600000

ClientKey(共享网关)

## 访问凭据类型
credentials_type=client_key
# Client Key文件路径
client_key_private_key_path=#your client key private key file path#
## 读取client key的解密密码:支持从环境变量或者文件读取
client_key_password_from_env_variable=#your client key private key password environment variable name#
client_key_password_from_file_path=#your client key private key password file path#
## 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
## 用户自定义的刷新频率, 默认为6小时,最小值为5分钟,单位为毫秒
## 下面的配置将凭据刷新频率设定为1小时
refresh_secret_ttl=3600000

ClientKey(专属网关)

  • 方案一:配置ClientKey凭证口令(clientKey_****_Password.txt)文件的路径,由SDK读取其中的内容。

    cache_client_dkms_config_info=[{"regionId":"<your dkms regionId>","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
  • 方案二:直接配置ClientKey凭证口令(ClientKeyPassword)内容

    警告

    请先将凭证口令(ClientKeyPassword)即clientKey_****_Password.txt中的内容,存放至自定义环境变量(如clientKeyPassword_content)中。

    cache_client_dkms_config_info=[{"regionId":"<your dkms regionId>","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

步骤四:使用凭据 JDBC 客户端连接数据库

重要

示例中仅介绍必须修改的属性,其他属性请你根据实际业务情况进行填写。

通过JDBC方式连接数据库

  • MySQL数据库

    说明

    请将#your-mysql-secret-name#、<YOUR-MYSQL-IP>、<YOUR-MYSQL-PORT>、<YOUR-DATABASE-NAME>替换为你实际使用的凭据名称、服务器 IP 地址、端口、数据库名称。

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class SecretManagerJDBCSample {
        public static void main(String[] args) throws Exception {
            // 加载阿里云凭据JDBC客户端 Load the JDBC Driver com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver
            Class.forName("com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver");
            Connection connect = null;
            try {
                connect = DriverManager.getConnection("secrets-manager:mysql://<YOUR-MYSQL-IP>:<YOUR-MYSQL-PORT>/<YOUR-DATABASE-NAME>", "#your-mysql-secret-name#","");
            } catch(SQLException e) {
                e.printStackTrace();
            }
        }
    }
  • SQLServer数据库

    说明

    请将#your-sqlserver-secret-name#、<YOUR-SQLSERVER-IP>、<YOUR-SQLSERVER-PORT>、<YOUR-DATABASE-NAME>替换为你实际使用的凭据名称、服务器 IP 地址、端口、数据库名称。

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class SecretManagerJDBCSqlServerSample {
    
        public static void main(String[] args) throws Exception{
            // 加载阿里云凭据JDBC客户端 Load the JDBC Driver com.aliyun.kms.secretsmanager.MssqlSecretsManagerSimpleDriver
            Class.forName("com.aliyun.kms.secretsmanager.MssqlSecretsManagerSimpleDriver");
            Connection connect = null;
            try {
                connect = DriverManager.getConnection("secrets-manager:sqlserver://<YOUR-SQLSERVER-IP>:<YOUR-SQLSERVER-PORT>;databaseName=<YOUR-DATABASE-NAME>", "#your-sqlserver-secret-name#", "");
            }  catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
  • PostgreSQL数据库

    说明

    请将#your-postgresql-secret-name#、<YOUR-POSTGRESQL-IP>、<YOUR-POSTGRESQL-PORT>、<YOUR-DATABASE-NAME>替换为你实际使用的凭据名称、服务器 IP 地址、端口、数据库名称。

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class SecretManagerJDBCPostgreSQLSample {
        public static void main(String[] args) throws Exception {
            // 加载阿里云凭据JDBC客户端 Load the JDBC Driver com.aliyun.kms.secretsmanager.PostgreSQLSecretManagerSimpleDriver
            Class.forName("com.aliyun.kms.secretsmanager.PostgreSQLSecretManagerSimpleDriver");
            Connection connect = null;
            try {
                connect = DriverManager.getConnection("secrets-manager:postgresql://<YOUR-POSTGRESQL-IP>:<YOUR-POSTGRESQL-PORT>/<YOUR-DATABASE-NAME>", "#your-postgresql-secret-name#", "");
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
  • MariaDB数据库

    说明

    请将#your-mariadb-secret-name#、<YOUR-MARIADB-IP>、<YOUR-MARIADB-PORT>、<YOUR-DATABASE-NAME>替换为你实际使用的凭据名称、服务器 IP 地址、端口、数据库名称。

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class SecretManagerJDBCMarialDBSample {
    
    	public static void main(String[] args) throws Exception{
    		// 加载阿里云凭据JDBC客户端 Load the JDBC Driver com.aliyun.kms.secretsmanager.MariaDBSecretManagerSimpleDriver
    		Class.forName("com.aliyun.kms.secretsmanager.MariaDBSecretManagerSimpleDriver");
    		Connection connect = null;
    		try {
    			connect = DriverManager.getConnection("secrets-manager:mariadb://<YOUR-MARIADB-IP>:<YOUR-MARIADB-PORT>/<YOUR-DATABASE-NAME>", "#your-mariadb-secret-name#", "");
    		}  catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    }

通过数据库连接池连接数据库

请按如下方式设置 c3p0 配置文件(c3p0.properties)中的c3p0.user、c3p0.driverClass和c3p0.jdbcUrl。c3p0.user为凭据名称,c3p0.driverClass为阿里云凭据 JDBC Driver 类名称,c3p0.jdbcUrl需要以secrets-manager开头。

  • MySQL数据库

    说明

    请将#your-mysql-secret-name#、<YOUR-MYSQL-IP>、<YOUR-MYSQL-PORT>、<YOUR-DATABASE-NAME>替换为你实际使用的凭据名称、服务器 IP 地址、端口、数据库名称。

    c3p0.user=#your-mysql-secret-name#
    c3p0.driverClass=com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver
    c3p0.jdbcUrl=secrets-manager:mysql://<YOUR-MYSQL-IP>:<YOUR-MYSQL-PORT>/<YOUR-DATABASE-NAME>
  • SQLServer数据库

    说明

    请将#your-sqlserver-secret-name#、<YOUR-SQLSERVER-IP>、<YOUR-SQLSERVER-PORT>、<YOUR-DATABASE-NAME>替换为你实际使用的凭据名称、服务器 IP 地址、端口、数据库名称。

    c3p0.user=#your-sqlserver-secret-name#
    c3p0.driverClass=com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver
    c3p0.jdbcUrl=secrets-manager:sqlserver://<YOUR-SQLSERVER-IP>:<YOUR-SQLSERVER-PORT>/<YOUR-DATABASE-NAME>
  • PostgreSQL数据库

    说明

    请将#your-postgresql-secret-name#、<YOUR-POSTGRESQL-IP>、<YOUR-POSTGRESQL-PORT>、<YOUR-DATABASE-NAME>替换为你实际使用的凭据名称、服务器 IP 地址、端口、数据库名称。

    c3p0.user=#your-postgresql-secret-name#
    c3p0.driverClass=com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver
    c3p0.jdbcUrl=secrets-manager:postgresql://<YOUR-POSTGRESQL-IP>:<YOUR-POSTGRESQL-PORT>/<YOUR-DATABASE-NAME>
  • MariaDB数据库

    说明

    请将#your-mariadb-secret-name#、<YOUR-MARIADB-IP>、<YOUR-MARIADB-PORT>、<YOUR-DATABASE-NAME>替换为你实际使用的凭据名称、服务器 IP 地址、端口、数据库名称。

    c3p0.user=#your-mariadb-secret-name#
    c3p0.driverClass=com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver
    c3p0.jdbcUrl=secrets-manager:mariadb://<YOUR-MARIADB-IP>:<YOUR-MARIADB-PORT>/<YOUR-DATABASE-NAME>

通过数据源(DataSource)连接数据库

以使用 c3p0 ComboPooledDataSource、MySQL 数据库为例,在 Spring 配置文件中增加如下配置。

说明

请将#your-mysql-secret-name#、<YOUR-MYSQL-IP>、<YOUR-MYSQL-PORT>、<YOUR-DATABASE-NAME>替换为你实际使用的凭据名称、服务器 IP 地址、端口、数据库名称。

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" >
      <property name="driverClass" value="com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver" />
      <property name="user" value="#your-mysql-secret-name#" />
      <property name="jdbcUrl" value="secrets-manager:mysql://<YOUR-MYSQL-IP>:<YOUR-MYSQL-PORT>/<YOUR-DATABASE-NAME>" />
      <property name="maxPoolSize" value="***" />
      <property name="minPoolSize" value="***" />
      <property name="initialPoolSize" value="***" />
  </bean>
  <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" >
      <property name="dataSource" ref="dataSource" />
  </bean>
说明

请你根据实际需求设置 maxPoolSize、minPoolSize 和 initialPoolSize 参数值。

通过Druid连接池连接数据库

以 MySQL 数据库为例,您需要修改配置文件中的如下属性。

说明

请将#your-mysql-secret-name#、<YOUR-MYSQL-IP>、<YOUR-MYSQL-PORT>、<YOUR-DATABASE-NAME>替换为你实际使用的凭据名称、服务器 IP 地址、端口、数据库名称。

  • properties 配置文件方式

    username=#your-mysql-secret-name#
    driverClassName=com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver
    url=secrets-manager:mysql://<YOUR-MYSQL-IP>:<YOUR-MYSQL-PORT>/<YOUR-DATABASE-NAME>
  • bean 配置方式

    • 方式一:XML配置文件

      <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> 
           <property name="username" value="${your-mysql-secret-name}" />
           <property name="driverClassName" value="com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver" />
           <property name="url" value="secrets-manager:mysql://<YOUR-MYSQL-IP>:<YOUR-MYSQL-PORT>/<YOUR-DATABASE-NAME>" />
      </bean>
      
    • 方式二:配置属性注入

      在应用中新建一个加载数据库连接信息的驱动类。

      @Configuration
      public class DataConfig {
      
          @Value("${your-mysql-secret-name}")
          private String username;
      
          @Value("com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver")
          private String driverClassName;
      
          @Value("secrets-manager:mysql://<YOUR-MYSQL-IP>:<YOUR-MYSQL-PORT>/<YOUR-DATABASE-NAME>")
          private String url;
      
          @Bean(name = "dataSource",initMethod = "init",destroyMethod = "close")
          public DruidDataSource dataSource(){
              DruidDataSource druidDataSource = new DruidDataSource();
              druidDataSource.setUsername(username);
              druidDataSource.setDriverClassName(driverClassName);
              druidDataSource.setUrl(url);
              return druidDataSource;
          }
      }