返回首页

gbase数据、南大通用产品文档:GBase8c安全和认证(postgresqlconf)

更新日期:2024年09月11日

介绍设置客户端和服务器的安全认证方式的相关参数。

连接数据库
在创建数据库连接之后,才能使用它来执行SQL 语句操作数据。
函数原型
JDBC 提供了三个方法,用于创建数据库连接。

DriverManager.getConnection(String url);

DriverManager.getConnection(String url, Properties info);

DriverManager.getConnection(String url, String user, String password);
参数
表6-2 数据库连接参数
参数
描述
info
数据库连接属性(所有属性大小写敏感)。常用的属性如下:

PGDBNAME:String 类型。表示数据库名称。(URL 中无需配置该参数,
自动从URL 中解析)

PGHOST:String 类型。主机IP 地址。详细示例见下。

PGPORT:Integer 类型。主机端口号。详细示例见下。

user:String 类型。表示创建连接的数据库用户。

password:String 类型。表示数据库用户的密码。

enable_ce: String 类型。其中enable_ce=1 表示JDBC 支持密态等值查询。

refreshClientEncryption:String 类型。
其中refreshClientEncryption=1 表示密态

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
67
数据库支持客户端缓存刷新(默认值为1)。

loggerLevel:String 类型。目前支持3 种级别:OFF、DEBUG、TRACE。
设置为OFF 关闭日志,设置为DEBUG 和TRACE 记录的日志信息详细程
度不同。

loggerFile:String 类型。Logger 输出的文件名。需要显示指定日志文件名,
若未指定目录则生成在客户端运行程序目录。此参数已废弃,不再生效,
如需使用可通过java.util.logging 属性文件或系统属性进行配置。

allowEncodingChanges:Boolean 类型。设置该参数值为“true”进行字符集
类型更改,配合characterEncoding=CHARSET 设置字符集,二者使用“&”
分隔;characterEncoding 取值范围为UTF8、GBK、LATIN1。

currentSchema:String 类型。在search-path 中指定要设置的schema。

hostRecheckSeconds:Integer 类型。JDBC 尝试连接主机后会保存主机状态:
连接成功或连接失败。
在hostRecheckSeconds 时间内保持可信,
超过则状态
失效。缺省值是10 秒。

ssl:Boolean 类型。以SSL 方式连接。

ssl=true 可支持NonValidatingFactory 通道和使用证书的方式:
1、
NonValidatingFactory 通道需要配置用户名和密码,
同时将SSL 设置为true。
2、配置客户端证书、密钥、根证书,将SSL 设置为true。

sslmode:String 类型。SSL 认证方式。取值范围为:require、verify- ca、
verify-full。

require 只尝试SSL 连接,如果存在CA 文件,则应设置成verify-ca 的
方式验证。

verify-ca 只尝试SSL 连接,并且验证服务器是否具有由可信任的证书
机构签发的证书。

verify-full 只尝试SSL 连接,并且验证服务器是否具有由可信任的证书
机构签发的证书,以及验证服务器主机名是否与证书中的一致。

sslcert:String 类型。提供证书文件的完整路径。客户端和服务端证书的类
型为End Entity。

sslkey:String 类型。提供密钥文件的完整路径。使用时将客户端证书转换
为DER 格式:
openssl pkcs8 -topk8 -outform DER -in client.key -out client.key.pk8 -nocrypt

sslrootcert:String 类型。SSL 根证书的文件名。根证书的类型为CA。

sslpassword:String 类型。提供给ConsoleCallbackHandler 使用。

sslpasswordcallback:String 类型。SSL 密码提供者的类名。缺省值:

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
68
org.postgresql.ssl.jdbc4.LibPQFactory.ConsoleCallbackHandler。

sslfactory:String 类型。提供的值是SSLSocketFactory 在建立SSL 连接时用
的类名。

sslfactoryarg:String 类型。此值是上面提供的sslfactory 类的构造函数的可
选参数(不推荐使用)。

sslhostnameverifier:String 类型。主机名验证程序的类名。接口实现
javax.net.ssl.HostnameVerifier



使

org.postgresql.ssl.PGjdbcHostnameVerifier。

loginTimeout:Integer 类型。指建立数据库连接的等待时间。超时时间单位
为秒。

connectTimeout:Integer 类型。用于连接服务器操作的超时值。如果连接到
服务器花费的时间超过此值,
则连接断开。
超时时间单位为秒,
值为0 时表
示已禁用,timeout 不发生。

socketTimeout:Integer 类型。用于socket 读取操作的超时值。如果从服务
器读取所花费的时间超过此值,则连接关闭。超时时间单位为秒,值为0
时表示已禁用,timeout 不发生。

cancelSignalTimeout:Integer 类型。发送取消消息本身可能会阻塞,此属性
控制用于取消命令的“connect 超时”和“socket 超时”。
超时时间单位
为秒,默认值为10 秒。

tcpKeepAlive:
Boolean 类型。
启用或禁用TCP 保活探测功能。
默认为false。

logUnclosedConnections:Boolean 类型。客户端可能由于未调用Connection
对象的close()方法而泄漏Connection 对象。最终这些对象将被垃圾回收,
并且调用finalize()方法。如果调用者自己忽略了此操作,该方法将关闭
Connection。

assumeMinServerVersion:String 类型。客户端会发送请求进行float 精度设
置。该参数设置要连接的服务器版本,如assumeMinServerVersion=9.0,可
以在建立时减少相关包的发送。

ApplicationName:String 类型。设置正在使用连接的JDBC 驱动的名称。通
过在数据库主节点上查询pg_stat_activity 表可以看到正在连接的客户端信
息,
JDBC 驱动名称显示在application_name 列。
缺省值为PostgreSQL JDBC
Driver。

connectionExtraInfo:
Boolean 类型。
表示驱动是否上报当前驱动的部署路径、
进程属主用户到数据库。
取值范围:true 或false,默认值为false。设置connectionExtraInfo 为true,
JDBC 驱动会将当前驱动的部署路径、进程属主用户、url 连接配置信息上
报到数据库中,记录在connection_info 参数里;同时可以在

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
69
PG_STAT_ACTIVITY 中查询到。

autosave:String 类型。共有3 种:"always", "never", "conservative"。
如果查询失败,
指定驱动程序应该执行的操作。
在autosave=always 模式下,
JDBC 驱动程序在每次查询之前设置一个保存点,
并在失败时回滚到该保存
点。在autosave=never 模式(默认)下,无保存点。在autosave=conservative
模式下,每次查询都会设置保存点,但是只会在“statement XXX 无效”等
情况下回滚并重试。

protocolVersion:Integer 类型。连接协议版本号,目前仅支持1 和3。注意:
设置1 时仅代表连接的是V1 服务端。
设置3 时将采用md5 加密方式,
需要
同步修改数据库的加密方式:gs_guc set -N all -I all -c
"password_encryption_type=1" ,重启数据库生效后需要创建用md5 方式加
密口令的用户。同时修改pg_hba.conf,将客户端连接方式修改为md5。用
新建用户进行登录(不推荐)。
说明:
MD5 加密算法安全性低,存在安全风险,建议使用更安全的加密算法。

prepareThreshold:Integer 类型。控制parse 语句何时发送。默认值是5。第
一次parse 一个SQL 比较慢,后面再parse 就会比较快,因为有缓存了。如
果一个会话连续多次执行同一个SQL,
在达到prepareThreshold 次数以上时,
JDBC 将不再对这个SQL 发送parse 命令。

preparedStatementCacheQueries:Integer 类型。确定每个连接中缓存的查询
数,默认情况下是256。若在prepareStatement()调用中使用超过256 个不同
的查询,则最近最少使用的查询缓存将被丢弃。0 表示禁用缓存。

preparedStatementCacheSizeMiB:Integer 类型。确定每个连接可缓存的最大
值(以兆字节为单位),默认情况下是5。若缓存了超过5MB 的查询,则
最近最少使用的查询缓存将被丢弃。0 表示禁用缓存。

databaseMetadataCacheFields:Integer 类型。默认值是65536。指定每个连接
可缓存的最大值。“0”表示禁用缓存。

databaseMetadataCacheFieldsMiB:Integer 类型。默认值是5。每个连接可缓
存的最大值,单位是MB。“0”表示禁用缓存。

stringtype:String 类型,可选字段为:false, "unspecified", "varchar"。设置通
过setString()方法使用的PreparedStatement 参数的类型,如果stringtype 设
置为VARCHAR
(默认值)

则这些参数将作为varchar 参数发送给服务器。
若stringtype 设置为unspecified,则参数将作为untyped 值发送到服务器,
服务器将尝试推断适当的类型。

batchMode:String 类型。用于确定是否使用batch 模式连接。默认值为on,
表示开启batch 模式。

fetchsize:Integer 类型。用于设置数据库连接所创建statement 的默认

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
70
fetchsize。默认值为0,表示一次获取所有结果。

reWriteBatchedInserts:Boolean 类型。批量导入时,该参数设置为true,可
将N 条插入语句合并为一条:insert into TABLE_NAME values(values1, ...,
valuesN), ..., (values1, ..., valuesN);使用该参数时,需设置batchMode=off。

unknownLength:
Integer 类型,
默认为Integer.MAX_VALUE。
某些postgresql
类型(例如
TEXT )没有明确定义的长度,当通过
ResultSetMetaData.getColumnDisplaySize 和ResultSetMetaData.getPrecision
等函数返回关于这些类型的数据时,此参数指定未知长度类型的长度。

uppercaseAttributeName:
Boolean 类型,
默认值为false 不开启,
为true 时开
启。
该参数开启后会将获取元数据的接口的查询结果转为大写。
适用场景为
数据库中存储元数据全为小写,但要使用大写的元数据作为出参和入参。






使用 MAX_INCOMPLETE_CONNECTIONS 配置参数来指定一个会话中未完成连接的最大数目。
onconfig.std 值
MAX_INCOMPLETE_CONNECTIONS 1024
单位
未完成连接的数目
生效
编辑 onconfig 文件并重启数据库服务器之后。
当您通过运行 onmode -wf 命令在 onconfig 文件中动态地重置该值时。
当您通过运行 onmode -wm 命令重置内存中的该值时。
用法
达到 MAX_INCOMPLETE_CONNECTIONS 配置参数中指定的数目之后,在 online 消息中写入
错误消息,说明服务器可能受到“拒绝服务”袭击。另请参阅关于 LISTEN_TIMEOUT 配置
参数的信息,那个配置参数指定服务器等待连接的秒数。

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 104 -

依赖于机器保持线程(数目)的能力,您可配置 MAX_INCOMPLETE_CONNECTIONS 为一个较
高值。依赖于网络流量,您还可设置 LISTEN_TIMEOUT 配置参数为一个较低值来降低袭击
可达到最大限制的可能性,该参数指定服务器等待连接的秒数。