1. 连接设置(客户端和服务器连接方式相关的参数)
listen_addresses
参数说明:声明服务器监听客户端连接的TCP/IP地址。
取值范围:
- 主机名或IP地址,多个值之间用英文逗号分隔。
- 星号(*)表示所有IP地址。
- 置空则服务器不会监听任何IP地址,这种情况下,只有Unix域套接字可以用于连接数据库。
- 默认值:localhost,只允许进行本地“回环”连接。
port
参数说明:GaussDB服务监听的TCP端口号。
取值范围:
- 整型,1024~65535
- 默认值:5432
max_connections
参数说明:允许和数据库连接的最大并发连接数。
注意
- 增大这个参数可能导致GaussDB要求更多的SystemV共享内存或者信号量,可能超过操作系统缺省配置的最大值。建议保持默认值。
- 参数改小时会导致下次数据库以pending或者standby方式启动失败,可以通过启动为normal或者primary模式进行启动更改。
取值范围:
- 整型
- 默认值:100,如果该默认值超过内核支持的最大值(在执行gs_initdb的时候判断),系统会提示错误。
superuser_reserved_connections
参数说明:设置GaussDB系统管理员的连接数。最大值不能超过max_connections。非系统管理员最大的连接数为max_connections的值减去superuser_reserved_connections的值。
取值范围:
- 整型
- 默认值:3
unix_socket_directory
参数说明:设置GaussDB服务器监听客户端连接的Unix域套接字目录。
取值范围:
- 字符串
- 默认值:空
unix_socket_group
参数说明:设置Unix域套接字的所属组(套接字的所属用户总是启动服务器的用户)。可以与选项unix_socket_permissions一起用于对套接字进行访问控制。
取值范围:
- 字符串
- 默认值:空字符串,表示当前用户的缺省组。
unix_socket_permissions
参数说明:设置Unix域套接字的访问权限。
-
Unix域套接字使用普通的Unix文件系统权限集。这个参数的值应该是数值的格式(chmod和umask命令可接受的格式)。如果使用自定义的八进制格式,数字必须以0开头。
-
建议设置为0770(只有用户和同组的人可以访问)或者0700(只有用户自己可以访问)。
取值范围:
- 字符串
- 默认值:0777,表示任何人都可以连接。
tcp_keepalives_idle
参数说明:在支持TCP_KEEPIDLE套接字选项的系统上,设置发送活跃信号的间隔秒数。不发送保持活跃信号,连接就会处于闲置状态。
注意:
- 如果操作系统不支持TCP_KEEPIDLE选项 ,这个参数的值必须为0。
- 在通过Unix域套接字进行的连接的操作系统上,这个参数将被忽略。
取值范围:
- 整型(秒)
- 默认值:0
tcp_keepalives_interval
参数说明:在支持TCP_KEEPINTVL套接字选项的操作系统上,以秒数声明在重新传输之间等待响应的时间。
取值范围:
- 整型(秒)
- 默认值:0
注意:
- 如果操作系统不支持TCP_KEEPINTVL选项,这个参数的值必须为0。
- 在通过Unix域套接字进行的连接的操作系统上,这个参数将被忽略。
tcp_keepalives_count
参数说明:在支持TCP_KEEPCNT套接字选项的操作系统上,设置GaussDB服务端在断开与客户端连接之前可以等待的保持活跃信号个数。
注意:
- 如果操作系统不支持TCP_KEEPCNT选项,这个参数的值必须为0。
- 在通过Unix域套接字进行连接的操作系统上,这个参数将被忽略。
取值范围:
- 整型
- 默认值:0,表示GaussDB未收到客户端反馈的保持活跃信号则立即断开连接。
2.连接池
当使用连接池访问数据库时,在系统运行过程中,数据库连接是被当作对象存储在内存中的,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接来使用。用户使用完毕后,数据库并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。
注意:
当使用连接池时,不支持一些会话相关的特性,如:预备语句,set语句等,服务器端的认证方式不支持cert认证。
pooler_mode
参数说明:定义连接池模式。
取值范围:
- off 表示关闭连接池功能
- on表示使用事务级连接池
- session表示使用会话级连接池
- transaction表示使用事务级连接池
- statement表示使用语句级连接池
说明:
- 会话级连接池:客户端连接连接池后,客户端会被赋予一个连接,只有在客户端断开连接后,连接池进程才会回收这个连接到连接池中。
- 事务级连接池:只有客户端需要执行一个事务时,连接池才会分配给客户端一个连接。当连接池进程检测到事务执行完,会回收这个连接到连接池中。
- 语句级连接池:只有客户端需要执行一个SQL语句时,连接池才会分配给客户端一个连接。当连接池进程检测到SQL执行完,会回收这个连接到连接池中。
警告:
当使用事务级连接池或语句级连接池时,不支持一些和会话相关的特性,如:预备语句,set语句等。
- 默认值:off,默认不使用连接池。
pooler_listen_addr
参数说明:声明连接池管理进程监听客户端连接的TCP/IP地址。
说明:
在Windows配置连接池监听网卡时,必须要保证listen_addresses参数配置中有localhost或127.0.0.1的网卡设置,否则连接不成功。
取值范围:
- 主机名或IP地址,多个值之间用英文逗号分隔。
- 星号(*)表示所有IP地址。
- 置空则连接池管理进程不会监听任何IP地址,这种情况下,只有Unix域套接字可以用于连接数据库。
- 默认值:localhost,只允许进行本地“回环”连接。
pooler_listen_port
参数说明:连接池进程监听的TCP端口号。
取值范围:
- 整型,1024~65535
- 默认值:6432
pooler_max_conn
参数说明:允许和连接池连接的最大并发连接数。
取值范围:
- 整型
- 默认值:100
default_pool_size
参数说明:每个用户/数据库允许的连接数,即正常连接数。
取值范围:
- 整形
- 默认值:20
min_pool_size
参数说明:最小连接数。
取值范围:
- 整形
- 默认值:0
reserve_pool_size
参数说明:在正常连接数的基础上,允许增加的额外连接数。
取值范围:
- 整形
- 默认值:0
reserve_pool_timeout
参数说明:使用额外连接需等待的时间。
说明:
额外连接的数量由reserve_pool_size决定。
取值范围:
- 整形(秒)
- 默认值:5s
pooler_server_lifetime
参数说明:连接池中的后端进程最大生命周期。
取值范围:
- 整形(分钟)
- 默认值:60min
pooler_server_idletime
参数说明:连接池中的后端进程最长空闲时间。
取值范围:
- 整形(分钟)
- 默认值:10min
pooler_conninfo
参数说明:定义特定数据库的连接池相关参数设置。
取值范围:
- 字符串
- 默认值:空
pooler_shmem_comm
参数说明:决定连接池是否通过共享内存和后端进程通信。
取值范围:
- 布尔型
- on 表示允许
- off 表示不允许
- 默认值:off
3.安全和认证(postgresql.conf)
客户端和服务器的安全认证方式的相关参数
authentication_timeout
参数说明:完成客户端认证的最长时间。如果一个客户端没有在这段时间里完成与服务器端的认证,则服务器自动中断与客户端的连接,这样就避免了出问题的客户端无限制地占用连接数。
取值范围:
- 整型(min)
- 默认值:1
ssl
参数说明:启用SSL连接。
取值范围:
- 布尔型
- on表示启用SSL连接
- off表示不启用SSL连接
- 默认值:off
ssl_ciphers
参数说明:指定SSL支持的加密算法列表。
取值范围:
- 字符串,如果指定多个加密算法,加密算法之间需要以分号分割。
- 默认值:ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH
ssl_renegotiation_limit
参数说明:指定在会话密钥重新协商之前,通过SSL加密通道可以传输的流量。这个重新协商流量限制机制可以减少攻击者针对大量数据使用密码分析法破解密钥的几率,但是也带来较大的性能损失。流量是指发送和接受的流量总和。
取值范围:
- 整型,其中0表示禁用重新协商机制。
- 默认值:512MB
ssl_cert_file
参数说明:指定包含SSL服务器证书的文件的名称。必须使用相对路径,相对路径是相对于数据目录的。
注意:
不要将此文件配置在data目录的子目录下,否则在数据库重建时,如果本机是备机,则会将此文件删除。
取值范围:
- 字符串
- 默认值:server.crt
ssl_key_file
参数说明:指定包含SSL私钥的文件名称。必须使用相对路径,相对路径是相对于数据目录的。
注意:
不要将此文件配置在data目录的子目录下,否则在数据库重建时,如果本机是备机,则会将此文件删除。
取值范围:
- 字符串
- 默认值:server.key
ssl_ca_file
参数说明:指定包含CA信息的文件的名称。必须使用相对路径,相对路径是相对于数据目录的。
** 注意**:
不要将此文件配置在data目录的子目录下,否则在数据库重建时,如果本机是备机,则会将此文件删除。
取值范围:
- 字符串
- 默认值:空,表示没有CA文件被加载,不进行客户端证书验证。
ssl_crl_file
参数说明:指定包含CRL信息的文件的名称。必须使用相对路径,相对路径是相对于数据目录的。
注意:
不要将此文件配置在data目录的子目录下,否则在数据库重建时,如果本机是备机,则会将此文件删除。
取值范围:
- 字符串
- 默认值:空,表示没有CRL文件被加载。
localdomain_ssl_mode
参数说明:在SSL功能开启后,可以通过该参数设置同地域节点之间是否优先选用SSL功能。
取值范围:
- 整型。
- 1表示同地域节点之间选用SSL功能。
- 0表示同地域节点之间不选用SSL功能。
- 默认值:1
password_policy
参数说明:在使用CREATE ROLE/USER或者ALTER ROLE/USER命令创建或者修改GaussDB帐户时,该参数决定是否进行密码复杂度检查。关于密码复杂度检查策略请参见设置密码安全策略。
注意:
从安全性考虑,请勿关闭密码复杂度策略。
取值范围:
- 整型
- 0表示不采用任何密码复杂度策略。
- 1表示采用默认密码复杂度校验策略。
- 默认值:1
password_reuse_time
参数说明:在使用ALTER USER或者ALTER ROLE修改用户密码时,该参数指定是否对新密码进行可重用天数检查。关于密码可重用策略请参见设置密码安全策略。
注意:
修改密码时会检查配置参数password_reuse_time和password_reuse_max,只要满足其中任一个,即可认为密码可以重用。
取值范围:
- 浮点型(天),最小值为0
- 0表示不检查密码可重用的天数。
- 正数表示新密码不能为该值指定的天数内使用过的密码。
- 默认值:60
password_reuse_max
参数说明:在使用ALTER USER或者ALTER ROLE修改用户密码时,该参数指定是否对新密码进行可重用次数检查。关于密码可重用策略请参见设置密码安全策略。
注意:
修改密码时会检查配置参数password_reuse_time和password_reuse_max,只要满足其中任一个,即可认为密码可以重用。
取值范围:
- 整型,最小值为0
- 0表示不检查密码可重用次数。
- 正整数表示新密码不能为该值指定的次数内使用过的密码。
- 默认值:0
password_lock_time
参数说明:该参数指定帐户被锁定后自动解锁的时间。关于帐户自动锁定策略请参见设置帐户安全策略(主机)。
注意:
password_lock_time和failed_login_attempts必须都为正数时锁定和解锁功能才能生效。
取值范围:
- 浮点型,最小值为0
- 0表示密码验证失败时,自动锁定功能不生效。
- 正数表示帐户被锁定后,当锁定时间超过password_lock_time设定的值时,帐户将会被自行解锁。
- 默认值:1
failed_login_attempts
参数说明:在任意时候,如果输入密码错误的次数达到failed_login_attempts则当前帐户被锁定,password_lock_time秒后被自动解锁。 例如,登录时输入密码失败,ALTER USER时修改密码失败等。关于帐户自动锁定策略请参见设置帐户安全策略(主机)。
注意:
failed_login_attempts 和 password_lock_time 必须都为正数时锁定和解锁功能才能生效。
取值范围:
- 整型,最小值为0
- 0表示自动锁定功能不生效。
- 正整数表示当错误密码次数达到failed_login_attempts设定的值时,当前帐户将被锁定。
- 默认值:10
ip_not_locked
参数说明:该参数可以设置不需要锁定用户的连接。
取值范围:
- 字符串,以“,”分割的ip/mask序列。
- 默认值:空
password_encryption_type
参数说明:该字段决定采用何种加密方式对用户密码进行加密存储。
取值范围:
- 整型
- 0表示采用 md5 方式对密码加密
- 1表示采用 SHA256 方式对密码加密
- 默认值:1
注意:
md5 为不安全的加密算法,不建议您使用。
wallet_directory
参数说明:该参数配置钱夹密码存储的位置。
注意:
该参数设定的路径长度不能超过1024,否则会因为截断导致路径错误。
取值范围:
- 字符串
- 默认值:pg_wallet,表示在数据目录下的pg_wallet/目录下的wallet.tablespace文件中存储钱夹密码。