如果主机需要远程连接数据库,必须在数据库系统的配置文件中增加此主机的信息,并且进行客户端接入认证。配置文件(默认名称为pg_hba.conf)存放在数据库的数据目录里。hba(host-based authentication)表示是基于主机的认证。
GBase 8c 支持如下三种认证方式,这三种方式都需要配置“pg_hba.conf”文件。
- – 基于主机的认证:服务器端根据客户端的IP地址、用户名及要访问的数据库来查看配置文件从而判断用户是否通过认证。
- – 口令认证:包括远程连接的加密口令认证和本地连接的非加密口令认证。
- SSL加密:使用OpenSSL(开源安全通信库)提供服务器端和客户端安全连接的环境。
以下列举限制 DBA 用户登陆方法:
1、 检查pg_hba.conf 配置文件是否存在任意客户端接入配置
任意IP接入配置表现为 ADDRESS为 0.0.0.0/0 ,若有则需要将其注释掉,同时备机的pg_hba.conf 文件也需要注释。
Pg_hba.conf 配置文件目录可以通过查看集群状态获取,或者通过命令行输入获得。
查看集群状态获取: gha_ctl monitor all -l http://192.16.8.54:2379 -H
通过命令行输入获取:show data_directory;
2、 执行命令修改并加载配置文件即可
举例 给test1普通用户授权任意IP登陆,执行以下命令即可
gs_guc reload -N all -I all -h "host all test1 0.0.0.0/0 sha256"
举例 给gbase8c DBA用户授权指定IP登陆,执行以下命令
gs_guc reload -N all -I all -h "host all gbase8c 192.16.8.54/32 sha256"
举例 给gbase8c DBA用户授权指定IP、数据库登陆,执行以下命令
gs_guc reload -N all -I all -h "host postgres gbase8c 192.16.8.54/32 sha256"
举例 给test1 普通用户 授权指定IP登陆,指定数据库登陆
gs_guc reload -N all -I all -h "host postgres test1 192.16.8.54/32 sha256"
参数说明
“host postgres test1 192.16.8.54/32 sha256” 分别对应
TYPE DATABASE USER ADDRESS METHOD
TYPE | local | 表示这条记录只接受通过Unix域套接字进行的连接。没有这种类型的记录,就不允许Unix域套接字的连接。 只有在从服务器本机使用gsql连接且在不指定-h参数的情况下,才是通过Unix域套接字连接。 |
---|---|---|
host | 表示这条记录既接受一个普通的TCP/IP套接字连接,也接受一个经过SSL加密的TCP/IP套接字连接。 | |
hostssl | 表示这条记录只接受一个经过SSL加密的TCP/IP套接字连接。 | |
hostnossl | 表示这条记录只接受一个普通的TCP/IP套接字连接。 | |
DATABASE | 声明记录所匹配且允许访问的数据库。 | |
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 | 声明连接时使用的认证方法。 |