更新时间:2025-03-12 GMT+08:00
分享

以非加密方式连接

JDBC以非加密方式连接数据库,首先要加载驱动,然后再创建数据库连接。因此本章节主要介绍加载驱动方式、创建数据库连接的接口、采用不同接口进行非加密连接。

加载驱动方式介绍

加载驱动(以opengaussjdbc.jar为例)有两种方法:
  • 在代码中创建连接之前在任意位置装载:
    Class.forName("com.huawei.opengauss.jdbc.Driver");
  • 在JVM启动时参数传递,指定驱动名称,适用于DOS窗口或者Linux上执行Java代码。jdbctest为测试用例程序的名称。
    java -Djdbc.drivers=com.huawei.opengauss.jdbc.Driver jdbctest;
    • 当使用gsjdbc4.jar时,上面的Driver类名相应修改为“org.postgresql.Driver”。
    • 由于GaussDB在JDBC的使用上与PG的使用方法保持兼容,所以同时在同一进程内使用两个JDBC的驱动的时候,可能会造成类名冲突。
    • 本版本JDBC不再支持IAM认证功能。
    • 相比于PG驱动,GaussDB JDBC驱动主要做了以下特性的增强:
      • 支持SHA256加密方式登录。
      • 支持对接实现sf4j接口的第三方日志框架。
      • 支持连接级别的分布式负载均衡。
      • 支持容灾切换。

创建数据库连接的接口介绍

JDBC提供了三种接口,用于创建数据库连接。url、info、user、password参数描述,请参见表1

接口一:DriverManager.getConnection(String url)。该方式需要把数据库用户名、密码写在url中,有一定的安全风险,因此不推荐使用。

接口二:DriverManager.getConnection(String url, String user, String password)。具体请参见采用接口二连接数据库

接口三:DriverManager.getConnection(String url, Properties info)。具体请参见采用接口三连接数据库

表1 数据库连接参数

参数

描述

url

opengaussjdbc.jar数据库连接描述符。格式如下:

  • jdbc:opengauss:
  • jdbc:opengauss:database
  • jdbc:opengauss://host/database
  • jdbc:opengauss://host:port/database
  • jdbc:opengauss://host:port/database?param1=value1&param2=value2
  • jdbc:opengauss://host1:port1,host2:port2/database?param1=value1&param2=value2
说明:
  • 使用gsjdbc200.jar时,将“jdbc:opengauss”修改为“jdbc:gaussdb”
  • database为要连接的数据库名称。数据库名称缺省则与用户名一致。
  • host为数据库服务器名称或IP地址。

    由于安全原因,数据库CN禁止集群内部其他节点无认证接入。如果要在集群内部访问CN,请将JDBC程序部署在CN所在机器,host使用"127.0.0.1"。否则可能会出现“FATAL: Forbid remote connection with trust method!”错误。

    建议业务系统单独部署在集群外部,否则可能会影响数据库运行性能。

    缺省情况下,连接服务器为localhost。

  • port为数据库服务器端口。

    缺省情况下,会尝试连接到5431端口的database。

  • param为参数名称,即数据库连接属性。参数可以配置在url中,以“?”开始配置,使用“=”给参数赋值,使用“&”作为不同参数的间隔。
  • value为参数值,即数据库连接属性值。
  • 连接时需配置connectTimeout、socketTimeout,如果未配置,默认为0,即不会超时。在DN与客户端出现网络故障时,客户端一直未收到DN侧ACK确认报文,会启动超时重传机制,不断地进行重传。当重传次数达到默认的15次后才会报超时错误,会导致RTO时间很高。
  • 建议使用JDBC标准接口建立连接时,确保url格式的合法性,不合法的url会导致连接失败,且报错信息中包含原始url字符串,可能造成敏感信息泄漏。
  • url中不允许配置密码、凭证等敏感信息,建议通过Properties连接属性来设置敏感信息,参见采用接口三连接数据库

info

数据库连接属性。全量参数请参见连接参数参考

user

数据库用户。

password

数据库用户的密码。

采用接口二连接数据库

以下以opengaussjdbc.jar为例,使用DriverManager.getConnection(String url, String user, String password)接口创建数据库连接,步骤如下:

  1. 导入java.sql.Connection和java.sql.DriverManager。

    java.sql.Connection是数据库连接接口,通过java.sql.DriverManager的getConnection()方法让应用程序连接到数据库。此外,用户需要根据实际的应用场景,再导入其他的接口和类,具体请参见JDBC接口参考
    1
    2
    import java.sql.Connection;
    import java.sql.DriverManager;
    

  2. 指定数据库sourceURL($ip、$port、database需要用户自行修改)、用户名和密码。

    用户名和密码直接写到代码中有很大的安全风险,建议在环境变量中存放。
    String sourceURL = "jdbc:opengauss://$ip:$port/database";
    String userName = System.getenv("EXAMPLE_USERNAME_ENV");
    String password = System.getenv("EXAMPLE_PASSWORD_ENV");

  3. 加载驱动。

    1. 在代码运行工具(如IDE)中添加opengaussjdbc.jar包。
    2. 执行以下命令加载数据库驱动程序“com.huawei.opengauss.jdbc.Driver”。
      String driver = "com.huawei.opengauss.jdbc.Driver";
      Class.forName(driver);

  4. 创建数据库连接。

    调用DriverManager.getConnection(String url, String user, String password),进行数据库连接。
    Connection conn = DriverManager.getConnection(sourceURL, userName, password);

采用接口三连接数据库

以下以opengaussjdbc.jar为例,使用DriverManager.getConnection(String url, Properties info)接口创建数据库连接,步骤如下:

  1. 导入java.sql.Connection、java.sql.DriverManager、java.util.Properties。

    java.util.Properties的setProperty()方法,用于设置Properties对象的属性值。此外,用户需要根据实际的应用场景,再导入其他的接口和类,具体请参见JDBC接口参考
    1
    2
    3
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.util.Properties;
    

  2. 指定数据库sourceURL($ip、$port、database需要用户自行修改)、用户名和密码。

    用户名和密码直接写到代码中有很大的安全风险,建议在环境变量中存放。
    String sourceURL = "jdbc:opengauss://$ip:$port/database";
    String userName = System.getenv("EXAMPLE_USERNAME_ENV");
    String password = System.getenv("EXAMPLE_PASSWORD_ENV");

  3. 创建Properties对象,并将userName和password设置为该对象的属性值。

    Properties info = new Properties();
    info.setProperty("user", userName);
    info.setProperty("password", password);

  4. 加载驱动。

    1. 在代码运行工具(如IDE)中添加opengaussjdbc.jar包。
    2. 执行以下命令加载数据库驱动程序“com.huawei.opengauss.jdbc.Driver”。
    String driver = "com.huawei.opengauss.jdbc.Driver";
    Class.forName(driver);

  5. 创建数据库连接。

    调用DriverManager.getConnection(String url, Properties info),进行数据库连接。
    1
    Connection conn = DriverManager.getConnection(sourceURL, info);
    

相关文档