合 PG防火墙配置文件pg_hba.conf介绍
Tags: PG体系结构pg_hba.conf参数文件
注意:防火墙
$PGDATA/pg_hba.conf
文件和密码~/.pgpass
文件的优先级是:先通过pg_hba.conf校验,若需要密码再去校验.pgpass文件。
该文件位于初始化安装的数据库目录下,例如:/var/lib/pgsql/11/data/pg_hba.conf,配置示例如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 | cat << EOF > /var/lib/pgsql/11/data/pg_hba.conf # TYPE DATABASE USER ADDRESS METHOD local all all trust host all all ::1/128 trust host all all 127.0.0.1/32 trust host all all 0.0.0.0/0 md5 host replication all 0.0.0.0/0 md5 EOF -- 远程访问,也可以直接加上 host all all all md5 |
可以通过视图pg_hba_file_rules来查询该文件的内容(PG10新增)。pg_hba.conf修改后,使用pg_ctl reload重新读取pg_hba.conf文件。
1 2 3 4 5 6 7 8 9 | postgres=# select * from pg_hba_file_rules; line_number | type | database | user_name | address | netmask | auth_method | options | error -------------+-------+---------------+-----------+-----------+-----------------------------------------+-------------+---------+------- 2 | local | {all} | {all} | | | trust | | 3 | host | {all} | {all} | ::1 | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | trust | | 4 | host | {all} | {all} | 127.0.0.1 | 255.255.255.255 | trust | | 5 | host | {all} | {all} | 0.0.0.0 | 0.0.0.0 | md5 | | 6 | host | {replication} | {all} | 0.0.0.0 | 0.0.0.0 | md5 | | (5 rows) |
每一行的格式为:
连接方式 连接的数据库 连接的用户 连接的主机IP 认证方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust # Allow replication connections from localhost, by a user with the # replication privilege. local replication all trust host replication all 127.0.0.1/32 trust host replication all ::1/128 trust # 禁止超级用户从远程连接 host all postgres 0.0.0.0/0 reject # 应用连接配置:哪个用户,从哪里来,连接什么数据库。规则为使用何种认证方法,或拒绝? # TYPE DATABASE USER ADDRESS METHOD # 如果不想挨个配置,可以使用如下配置,允许所有来源,通过任意用户访问任意数据库 host all all 0.0.0.0/0 md5 # 或者 host all all all md5 |
TYPE 参数设置
TYPE 表示主机类型,值可能为:
若为 local
表示是unix-domain的socket连接,
若为 host
是TCP/IP socket
若为 hostssl
是SSL加密的TCP/IP socket
DATABASE 参数设置
DATABASE 表示数据库名称,值可能为:all
,sameuser
,samerole
,replication
,数据库名称
,或者多个
数据库名称用 逗号
,注意ALL不匹配 replication
USER 参数设置
USER 表示用户名称,值可以为:all
,一个用户名
,一组用户名
,多个用户时,可以用 ,
逗号隔开, 或者在用户名称前缀 +
在USER和DATABASE字段,也可以写一个单独的 文件名称用 @
前缀,该文件包含数据库名称或用户名称
ADDRESS 参数设置
该参数可以为 主机名称
或者IP/32(IPV4)
或 IP/128(IPV6)
,主机名称以 .
开头,samehost
或samenet
匹配任意Ip地址