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

数据库连接参数

函数原型

JDBC提供了三个方法,用于创建数据库连接。
  • DriverManager.getConnection(String url)。
  • DriverManager.getConnection(String url, Properties info)。
  • DriverManager.getConnection(String url, String user, String password)。

连接参数

表1 数据库连接参数

参数

描述

url

MySQL JDBC驱动的数据库连接描述符。格式如下:

jdbc:mysql://host:port/database
jdbc:mysql://host:port/database?param1=value1&param2=value2
说明:
  • database为需要连接的数据库名称,不可缺省,需要明确指定。
  • host为数据库服务器名称或IP地址,支持IPv4格式地址。
    • 由于安全原因,数据库主节点禁止数据库内部其他节点无认证接入。如果要在数据库内部访问数据库主节点,请将JDBC程序部署在数据库主节点所在机器,host使用“127.0.0.1”。否则可能会出现“FATAL: Forbid remote connection with trust method!”错误。
    • 建议业务系统单独部署在数据库外部,否则可能会影响数据库运行性能。
    • 缺省情况下,连接服务器为localhost。
  • port为数据库服务器端口,不可缺省,需要在服务端设置GUC参数plat_compat_server_port。
  • param为参数名称,即数据库连接属性。

    参数可以配置在URL中,以?开始配置,以=为参数赋值,以&作为不同参数的间隔。也可以采用Properties对象的属性方式进行配置。

  • value为参数值,即数据库连接属性值。
  • 连接时需配置connectTimeout和socketTimeout,如果未配置,默认为0,即不会超时。在DN与客户端出现网络故障时,客户端一直未收到DN侧ACK确认报文时,会启动超时重传机制,不断地进行重新传递。当超时时间达到系统默认的600秒后才会报超时错误,这会导致RTO时间很高。
  • 建议使用JDBC标准接口建立连接时,确保URL格式的合法性,不合法的URL会导致异常,且异常中包含原始URL字符串,可能造成敏感信息泄漏。

info

数据库连接属性。具体请参见info参数的连接属性

user

数据库用户。

password

数据库用户的密码。

info参数的连接属性

info参数连接的所有属性名称对大小写敏感。常用的属性如表2所示。

表2 info参数的连接属性

属性名称

属性说明

属性值

user

表示创建连接的数据库用户。

属性类型:STRING

password

表示数据库用户的密码。

属性类型:STRING

useSSL

表示以SSL方式连接数据库。

属性类型:BOOLEAN

取值范围:

  • true表示以SSL方式连接数据库。
  • false表示不以SSL方式连接数据库。

verifyServerCertificate

表示以SSL方式连接数据库时,客户端是否校验服务端证书。

属性类型:BOOLEAN

取值范围:

  • true表示客户端需要校验服务端证书。
  • false表示客户端不校验服务端证书。

默认值:true

trustCertificateKeyStoreUrl

表示受信任的根证书密钥库的URL。

属性类型:STRING

trustCertificateKeyStoreType

表示受信任的根证书的密钥存储类型。

属性类型:STRING

默认值:JKS

trustCertificateKeyStorePassword

表示受信任的根证书密钥库的密码。

属性类型:STRING

clientCertificateKeyStoreUrl

表示客户端证书密钥库的URL。

属性类型:STRING

clientCertificateKeyStoreType

表示客户端证书的密钥存储类型。

属性类型:STRING

默认值:JKS

clientCertificateKeyStorePassword

表示客户端证书密钥库的密码。

属性类型:STRING

allowPublicKeyRetrieval

表示是否允许客户端从服务端获取公钥。

属性类型:BOOLEAN

取值范围:

  • true表示允许客户端从服务端获取公钥。
  • false表示禁止客户端从服务端获取公钥。

默认值:false

rewriteBatchedStatements

表示是否可对批量执行的SQL重写。

属性类型:BOOLEAN

取值范围:

  • true表示批量插入时,可将N条插入语句合并为一条:insert into TABLE_NAME values(values1, ..., valuesN), ..., (values1, ..., valuesN)。
  • false表示批量插入时,不重写SQL语句。

默认值:false

allowMultiQueries

表示是否可批量执行多条SQL语句。

属性类型:BOOLEAN

取值范围:

  • true表示允许批量执行多条SQL语句。
  • false表示禁止批量执行多条SQL语句。

默认值:false

autoReconnect

表示客户端断开连接后是否会自动重连。

属性类型:BOOLEAN

取值范围:

  • true表示客户端断连后,可自动重连。
  • false表示客户端断连后,不会自动重连。

默认值:false

useUnicode

表示是否使用Unicode字符编码。

属性类型:BOOLEAN

取值范围:

  • true表示客户端可使用unicode字符编码。
  • false表示不使用unicode字符编码。

默认值:false

characterEncoding

表示设置字符集。

说明:

需要保持客户端字符集与服务端一致。若未设置该参数,对于8.0.25及更早驱动版本,客户端将尝试使用服务端的默认字符集;对于8.0.26及更高驱动版本,客户端将使用utf8mb4的默认排序规则。

属性类型:STRING

connectTimeout

用于连接服务器操作系统的超时值。如果连接到服务器操作系统消耗的时间超过此值,则连接断开。当URL配置多IP时,表示连接单个IP的超时时间。

属性类型:INTEGER

属性单位:ms(毫秒)

取值范围:0 ~ 2147483647,0表示没有超时。

默认值:0

socketTimeout

用于socket读取操作的超时值。如果从服务器读取所消耗的时间超过此值,则连接关闭。

属性类型:INTEGER

属性单位:ms(毫秒)

取值范围:0 ~ 2147483647,0表示没有超时。

默认值:0

相关文档