使用JDBC和ODBC连接集群 创建IAM用户凭证 用户可以登录管理控制台创建访问密钥,如果您已经创建过了,也可以使用已有的访问密钥。 1. 登录管理控制台。 2. 将鼠标移到右上角的用户名,单击“我的凭证”。 3. 再单击“管理访问密钥”页签,可以查看已有的访问密钥,也可以单击“新增访问密钥”进行创建。 访问密钥是IAM身份认证的重要凭证,只有在新增访问密钥时,用户才可以下载到含有Access Key ID(AK)和Secret Access Key(SK)的密钥文件,在管理控制台只能查看到Access Key ID,如果您未曾下载过该密钥文件,请联系您的管理员进行获取,或者重新创建。 说明 每个用户最多可创建2个访问密钥,有效期为永久。为了帐号安全性,建议您定期更换并妥善保存访问密钥。 配置JDBC连接使用IAM认证方式连接集群 配置JDBC连接参数 数据库连接参数 参数 描述 url gsjdbc4.jar/gsjdbc200.jar数据库连接描述符。JDBC接口不提供重试连接的能力,您需要在业务代码中实现重试连接的处理。url示例如下: jdbc:dws:iam://dwsIAMdemo:cnnorth4/gaussdb?AccessKeyID XXXXXXXXXXXXXXXXXXXX&SecretAccessKey XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&DbUser usertest&AutoCreate true JDBC URL 参数说明: jdbc:dws:iam是URL格式的前缀。 dwsIAMdemo为数据库集群名称。 cnnorth4是集群所在的区域。 有关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。 示例 //以下用例以gsjdbc4.jar为例。 //以下代码将获取数据库连接操作封装为一个接口,可通过给定集群所在的区域、集群名称、AccessKeyID、SecretAccessKey及对应的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 + "&autoCreatetrue"; Connection conn null; try { //加载驱动。 Class.forName(driver); } catch( Exception e ) { return null; } try { //创建连接。 conn DriverManager.getConnection(sourceURL); System.out.println("Connection succeed!"); } catch(Exception e) { return null; } return conn; };