数据仓库服务 GAUSSDB(DWS)-配置JDBC连接(使用IAM认证方式):配置JDBC连接使用IAM认证方式连接集群

时间:2024-09-13 09:51:43

配置JDBC连接使用 IAM 认证方式连接集群

配置JDBC连接参数

表1 数据库连接参数

参数

描述

url

gsjdbc4.jar/gsjdbc200.jar数据库连接描述符。JDBC接口不提供重试连接的能力,您需要在业务代码中实现重试连接的处理。url示例如下:

jdbc:dws:iam://dws-IAM-demo:cn-north-4/gaussdb?AccessKeyID=XXXXXXXXXXXXXXXXXXXX&SecretAccessKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&DbUser=user_test&AutoCreate=true

JDBC URL参数说明:

  • jdbc:dws:iam是URL格式的前缀。
  • dws-IAM-demo为数据库集群名称。
  • cn-north-4是集群所在的区域。JDBC会根据所填写区域,访问对应DWS服务,向所在集群下发IAM证书,用于IAM用户认证。DWS服务地址已内置在JDBC配置文件中。

    有关 GaussDB (DWS)的区域信息,请参考地区和终端节点

  • gaussdb是要连接的数据库名。
  • AccessKeyID/SecretAccessKey为参数DbUser指定的IAM用户所对应的访问密钥ID和秘密访问密钥。
  • DbUser请设置为IAM用户名,注意,当前版本暂不支持IAM用户名中含有中划线的情况。
    • 如果数据库中已存在DbUser指定的用户,则临时用户凭证具有与现有用户相同的权限。
    • 如果数据库中不存在DbUser指定的用户,且AutoCreate参数值为true,则自动创建一个以DbUser参数值作为用户名的新用户,默认创建的用户为数据库普通用户。
  • AutoCreate可以不设置,默认为false。该参数表示是否在数据库中自动创建一个以DbUser参数值作为用户名的数据库用户。
    • true表示自动创建。如果用户已存在则不会再创建。
    • false表示不会自动创建。如果数据库中不存在DbUser指定的用户名将返回失败。

info

数据库连接属性。常用的属性如下:

  • ssl:Boolean类型。表示是否使用SSL连接。
  • loglevel:Integer类型。为LogStream或LogWriter设置记录进DriverManager当前值的日志信息量。

    目前支持org.postgresql.Driver.DEBUG和org.postgresql.Driver.INFO。值为1时,表示只打印org.postgresql.Driver.INFO,将记录非常少的信息。值大于等于2时,表示打印org.postgresql.Driver.DEBUG和org.postgresql.Driver.INFO,将产生详细的日志信息。默认值为0,表示不打印日志。

  • charSet:String类型。表示在向数据库发送数据或从数据库接收数据时使用到的字符集。
  • prepareThreshold:Integer类型。用于确定在转换为服务器端的预备语句之前,要求执行方法PreparedStatement的次数。缺省值是5。

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//以下用例以gsjdbc4.jar为例
//以下代码将获取数据库连接操作封装为一个接口,可通过给定集群所在的区域、集群名称、AccessKeyIDSecretAccessKey及对应的IAM用户名来连接数据库
public static Connection GetConnection(String clustername, String regionname, String AK, String SK,
    String username) {
    //驱动类。
    String driver = "org.postgresql.Driver";
    //数据库连接描述符。
    String sourceURL = "jdbc:dws:iam://" + clustername + ":" + regionname + "/postgresgaussdb?" + "AccessKeyID="
        + AK + "&SecretAccessKey=" + SK + "&DbUser=" + username + "&autoCreate=true";

    Connection conn = null;

    try {
        //加载驱动。
        Class.forName(driver);
    } catch (ClassNotFoundException e) {
        return null;
    }
    try {
        //创建连接。
        conn = DriverManager.getConnection(sourceURL);
        System.out.println("Connection succeed!");
    } catch (SQLException e) {
        return null;
    }
    return conn;
}
support.huaweicloud.com/mgtg-dws/dws_01_0133.html