配置远程连接数据库(可选)

数据库安装并启动后,用户可以在数据库服务器本地通过客户端工具直接建立本地连接。如果需要通过主机的 IP 地址或者域名连接到远程数据库服务器,需要配置客户端接入认证策略。

配置文件 pg_hba.conf 位于数据库的数据目录 $PGDATA 中。

操作步骤

  1. 以安装 VexDB 的操作系统用户身份,登录数据库实例所在主机。
  2. 打开配置文件 pg_hba.conf。
    vi $PGDATA/pg_hba.conf
    
  3. 配置认证策略。
    pg_hba.conf 文件格式中一行对应一个认证规则,一条记录不能跨行存在。空白行和以 # 开头(即被注释)的行被忽略。
    pg_hba.conf 文件中的每条记录可以是下面四种格式之一:
    local     DATABASE USER METHOD [OPTIONS] 
    host      DATABASE USER ADDRESS METHOD [OPTIONS] 
    hostssl   DATABASE USER ADDRESS METHOD [OPTIONS] 
    hostnossl DATABASE USER ADDRESS METHOD [OPTIONS]
    

    例如以下配置示例,表示允许来自 IP 地址 xx.xx.xx.xx 的客户端通过 mytest 用户连接到所有数据库,32 表示子网掩码为 1 的位数,即 255.255.255.255。连接方式为 trust,即不需要密码验证。
    host all mytest xx.xx.xx.xx/32 trust
    
  4. 保存文件并使用以下命令重启数据库,使修改生效。
    vb_ctl restart
    

配置文件参考

参数名称 描述 取值范围
local 表示这条记录只接受通过 Unix 域套接字进行的连接。没有这种类型的记录,就不允许 Unix 域套接字的连接。只有在从服务器本机使用 vsql 连接且在不指定-U 参数的情况下,才是通过 Unix 域套接字连接。 -
host 表示这条记录既接受一个普通的 TCP/IP 套接字连接,也接受一个经过 SSL 加密的 TCP/IP 套接字连接。 连接地址
hostssl 表示这条记录只接受一个经过 SSL 加密的 TCP/IP 套接字连接。 用 SSL 进行安全的连接。。
hostnossl 表示这条记录只接受一个普通的 TCP/IP 套接字连接。 -
DATABASE 声明记录所匹配且允许访问的数据库。
  • all:表示该记录匹配所有数据库。
  • sameuser:表示如果请求访问的数据库和请求的用户同名,则匹配。
  • samerole:表示请求的用户必须是与数据库同名角色中的成员。
  • samegroup:与 samerole 作用完全一致,表示请求的用户必须是与数据库同名角色中的成员。
  • 一个包含数据库名的文件或者文件中的数据库列表:文件可以通过在文件名前面加前缀@来声明。文件中的数据库列表以逗号或者换行符分隔。
  • 特定的数据库名称或者用逗号分隔的数据库列表。
  • 说明:值 replication 表示如果请求一个复制链接,则匹配,但复制链接不表示任何特定的数据库。如需使用名为 replication 的数据库,需在 database 列使用记录“replication”作为数据库名。
    USER 声明记录所匹配且允许访问的数据库用户。
  • all:表明该记录匹配所有用户。
  • +用户角色:表示匹配任何直接或者间接属于这个角色的成员。说明: + 表示前缀符号。
  • 一个包含用户名的文件或者文件中的用户列表:文件可以通过在文件名前面加前缀@来声明。文件中的用户列表以逗号或者换行符分隔。
  • 特定的数据库用户名或者用逗号分隔的用户列表。
  • ADDRESS 指定与记录匹配且允许访问的 IP 地址范围。 支持 IPv4和 IPv6,可以使用如下两种形式来表示: IP 地址/掩码长度。例如,10.10.0.0/24 IP 地址子网掩码。例如,10.10.0.0 255.255.255.0 说明以 IPv4格式给出的 IP 地址会匹配那些拥有对应地址的 IPv6连接,比如127.0.0.1将匹配 IPv6地址 ::ffff:127.0.0.1
    METHOD 声明连接时使用的认证方法。 本产品支持如下几种认证方式,详细解释请参考表格认证方式:trustrejectmd5(不推荐使用,默认不支持,可通过password_encryption_type参数配置sha256certgss(仅用于 VexDB 内部节点间认证)sm3scram-sha256ldap

    认证方式

    认证方式 说明
    trust 采用这种认证模式时,本产品只完全信任从服务器本机使用 vsql 且不指定-U 参数的连接,此时不需要口令。trust 认证对于单用户工作站的本地连接是非常合适和方便的,通常不适用于多用户环境。如果想使用这种认证方法,可利用文件系统权限限制对服务器的 Unix 域套接字文件的访问。要使用这种限制有两个方法:
  • 设置参数unix_socket_permissions和unix_socket_group。
  • 设置参数unix_socket_directory,将 Unix 域套接字文件放在一个经过恰当限制的目录里。
  • 须知: 设置文件系统权限只能 Unix 域套接字连接,它不会限制本地 TCP/IP 连接。为保证本地 TCP/IP 安全,VexDB 不允许远程连接使用 trust 认证方法。
    reject 无条件地拒绝连接。常用于过滤某些主机。
    md5 要求客户端提供一个 md5加密的口令进行认证。
    不推荐使用 md5认证,因为 md5为不安全的加密算法,存在网络安全风险。VexDB 保留 md5认证和密码存储,是为了便于第三方工具的使用(比如 TPCC 评测工具)。
    sha256 要求客户端提供一个 sha256算法加密的口令进行认证,该口令在传送过程中结合 salt(服务器发送给客户端的随机数)的单向 sha256加密,增强了安全性。
    cert 客户端证书认证模式,此模式需进行 SSL 连接配置且需要客户端提供有效的 SSL 证书,不需要提供用户密码。
    该认证方式只支持 hostssl 类型的规则。
    gss 使用基于 gssapi 的 kerberos 认证。
    该认证方式依赖 kerberos server 等组件,仅支持 VexDB 内部通信认证。当前版本暂不支持外部客户端通过 kerberos 认证连接。 开启 VexDB 内部kerberos 认证会使增加内部节点建连时间,即影响首次涉及内部建连的 SQL 操作性能,内部连接建立好后, 后续操作不受影响。
    sm3 国密 SM3算法,目前只支持 vsql、JDBC、ODBC 三种连接方式
    scram-sha256 支持 SCRAM 认证,SCRAM 是一种基于盐(salt)和挑战-响应(challenge-response)的密码认证协议。
    ldap 客户端使用 LDAP 服务器进行登录认证。配置编译时加上--with-ldap选项。假设 ldap 服务器 IP 为192.168.1.10,在 pg_hba.conf 中配置 ldap 认证: local all all ldap ldapserver=192.168.1.10 ldapprefix=“uid=” ldapsuffix=“,ou=People,o=System Support,dc=my-domain,dc=com” host all all 127.0.0.1⁄32 ldap ldapserver=192.168.1.10 ldapprefix=“uid=” ldapsuffix=“,ou=People,o=System Support,dc=my-domain,dc=com”

    需要帮助?

    扫码添加企业微信
    获得专业技术支持

    企业微信二维码
    🎯 快速响应💡 专业解答