什么是pg_hba文件?

HBA全称是host-based authentication(基于主机的认证)。在initdb初始化数据目录时,它会在PG数据目录下安装一个默认的pg_hba.conf文件。pg_hba.conf默认路径是/var/lib/pgsql/<pg_version>/data

[root@node01 vagrant]# ps -ef|grep postgres
postgres 22899     1  0 16:48 ?        00:00:00 /usr/pgsql-11/bin/postmaster -D /var/lib/pgsql/11/data/
[root@node01 vagrant]# ll /var/lib/pgsql/11/data/pg_hba.conf
-rw-r--r--. 1 vagrant vagrant 911 Dec  6 16:48 /var/lib/pgsql/11/data/pg_hba.conf

pg_hba.conf中每条记录指定一种连接类型、一个客户端 IP 地址范围(如果和连接类型相关)、一个数据库名、一个用户名以及对匹配这些参数的连接使用的认证方法。第一条匹配连接类型、客户端地址、连接请求的数据库和用户名的记录将被用于执行认证。这个过程没有“落空”或者“后备”的说法:如果选择了一条记录而且认证失败,那么将不再考虑后面的记录。如果没有匹配的记录,那么访问将被拒绝。

记录格式一般是:

TYPE  DATABASE        USER            ADDRESS                 METHOD

各个域的具体含义参考http://www.postgres.cn/docs/14/auth-pg-hba-conf.html

常用配置

# 允许本地系统上的任何用户
# 通过 Unix 域套接字以任意
# 数据库用户名连接到任意数据库(本地连接的默认值)。
#
# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             all                                     trust# 相同的规则,但是使用本地环回 TCP/IP 连接。
#
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             127.0.0.1/32            trust# 和前一行相同,但是使用了一个独立的掩码列
#
# TYPE  DATABASE        USER            IP-ADDRESS      IP-MASK             METHOD
host    all             all             127.0.0.1       255.255.255.255     trust# IPv6 上相同的规则
#
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             ::1/128                 trust# 使用主机名的相同规则(通常同时覆盖 IPv4 和 IPv6)。
#
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             localhost               trust# 允许来自任意具有 IP 地址192.168.93.x 的主机上任意
# 用户以 ident 为该连接所报告的相同用户名连接到
# 数据库 "postgres"(通常是操作系统用户名)。
#
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    postgres        all             192.168.93.0/24         ident# 如果用户的口令被正确提供,允许来自主机 192.168.12.10
# 的任意用户连接到数据库 "postgres"。
#
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    postgres        all             192.168.12.10/32        scram-sha-256# 如果用户的口令被正确提供,允许 example.com 中主机上
# 的任意用户连接到任意数据库。
#
# 为大部分用户要求SCRAM认证,但是用户'mike'是个例外,
# 他使用的是不支持SCRAM认证的旧客户端。
#
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             mike            .example.com            md5
host    all             all             .example.com            scram-sha-256# 如果没有前面的 "host" 行,这三行
# 将拒绝所有来自 192.168.54.1的连接(因为那些项将首先被匹配),
# 但是允许来自互联网其他任何地方的
# GSSAPI-encrypted连接。零掩码导致主机IP 地址中的所有位都不会被考虑,
# 因此它匹配任意主机。未加密GSSAPI连接
# (which "跳转"到第三行是因为"hostgssenc" 仅匹配加密的 GSSAPI 连接) 是被允许的,但只能来自192.168.12.10.
#
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             192.168.54.1/32         reject
hostgssenc all          all             0.0.0.0/0               gss
host    all             all             192.168.12.10/32        gss# 允许来自 192.168.x.x 主机的用户连接到任意数据库,如果它们能够
# 通过 ident 检查。例如,假设 ident说用户是 "bryanh" 并且他要求以
# PostgreSQL 用户 "guest1" 连接,如果在 pg_ident.conf 有一个映射
# "omicron" 的选项说 "bryanh" 被允许以 "guest1" 连接,则该连接将被允许。
#
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             192.168.0.0/16          ident map=omicron# 如果这些是本地连接的唯一三行,它们将允许本地用户只连接到它们
# 自己的数据库(与其数据库用户名同名的数据库),不过管理员和角
# 色 "support" 的成员除外(它们可以连接到所有数据库)。文件
# $PGDATA/admins 包含一个管理员名字的列表。在所有情况下都要求口令。
#
# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   sameuser        all                                     md5
local   all             @admins                                 md5
local   all             +support                                md5# 上面的最后两行可以被整合为一行:
local   all             @admins,+support                        md5# 数据库列也可以用列表和文件名:
local   db1,db2,@demodbs  all                                   md5

下面是我生产环境上的配置,仅供参考。它允许本机免密登录postgres用户,用于管理员操作。其他用户需要md5加密,允许所有的IP段。

# TYPE  DATABASE        USER            ADDRESS                 METHOD# "local" is for Unix domain socket connections only
#local   all             all                                     trust
# IPv4 local connections:
host    all             postgres        127.0.0.1/32            trust
host    all             all             127.0.0.1/32            md5
host    all             all             all                     md5
# IPv6 local connections:
host    all             postgres        ::1/128                 trust
host    all             all             ::1/128                 md5
# 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

参考

http://www.postgres.cn/docs/14/auth-pg-hba-conf.html

PostgreSQL: Documentation: 15: 21.1. The pg_hba.conf File

Postgres pg_hba.conf文件相关推荐

  1. 从pg_hba.conf文件谈谈postgresql的连接认证

    最近一直在弄postgresql的东西,搭建postgresql数据库集群环境什么的.操作数据库少不得要从远程主机访问数据库环境,例如数据库管理员的远程管理数据库,远程的客户存取数据库文件. 而在po ...

  2. PostgreSQL pg_hba.conf 文件简析

    点击上方"蓝字" 关注我们,享更多干货! pg_hba.conf文件存放在数据库集群的数据目录里. HBA 的意思是 host-based authentication:基于主机的 ...

  3. 关于postgre中的pg_hba.conf 文件

    关于postgre中的pg_hba.conf 文件 客户端认证是由一个配置文件控制的,通常其文件名是 pg_hba.conf,存放在数据库集群的数据目录里. (HBA 的意思是 host-based ...

  4. PostgreSQL远程数据库连接 PostgreSQL pg_hba.conf 文件简析

    原文连接1:http://blog.csdn.net/zhouxuguang236/article/details/8217487 原文连接2:http://www.cnblogs.com/hilov ...

  5. PostgreSQL的pg_hba.conf文件讲解

    pg_hba.conf为PostgreSQL的访问策略配置文件,默认位于/var/lib/pgsql/10/data/目录(PostgreSQL10). 该配置文件有5个参数,分别为:TYPE(主机类 ...

  6. postgres启动服务器时missing or erroneous pg_hba.conf file

    强制关闭postgresql服务器,下次启动时会报错:missing or erroneous pg_hba.conf file,查看目标文件,pg_hba.conf文件存在,无从下手. 目前没有发现 ...

  7. gaussdb 【FAQ_002】【gs_guc配置pg_hba.conf后不生效】

    问题现象 使用gs_guc set -A命令修改pg_hba.conf配置文件后,配置结果如下: # IPv4 local connections:host all all 10.0.0.0/8 sh ...

  8. postgresql报错 :FATAL: no pg_hba.conf entry for host 192.168.163.130,user postgres,database pos

    报错原因 :没有在/postgres/data/pg_hba.conf配置文件中192.168.163.130授权 PostgreSQL安装及初始化完成以后,在它的配置文件里,默认只允许本机连接,而且 ...

  9. 连接docker中postgresql数据库出现Connection matched pg_hba.conf line 99: “host all all all md5“

    最近跑在docker里的go服务总是莫名其妙的突然连不上postgres数据库,postgres数据库也是跑在docker里,看了下日志 Connection matched pg_hba.conf ...

最新文章

  1. Tomcat 系统架构
  2. python xlsxwriter合并单元格_Python使用xlsxwriter导出表格并合并单元格
  3. MATLAB从入门到精通-Matlab R2020b中的新标记符号(New-marker-symbols)
  4. SAP Spartacus里的StorefrontConfig静态类型
  5. java 8 java demo_Java 8 中的 Streams API Demo
  6. kali 安装使用记录
  7. java 后台跳出提示_小猿圈Java初学者练习小案例:猜数字游戏
  8. C#开发:openfiledialog的使用
  9. matlab期权风险评估算法,使用 MATLAB 应用程序根据期权价格估算风险中性密度 (risk-neutral density, RND)...
  10. SQL 子查询怎么优化?写的很深!
  11. 使用xmodmap修改键盘映射
  12. 花粉俱乐部服务器维护,花粉俱乐部打不开进不去怎么回事?花粉俱乐部加载数据失败怎么解决?...
  13. Java 将base64图片字符串转化为File类型文件
  14. win10下Clion的安装与配置
  15. angular-Forms patchValue and setValue
  16. 项目中遇到的问题(一)弹出UIAlertController 时出现 Warning: Attempt to present * on * which is already presenting
  17. python接受键盘输入_Python读取键盘输入的2种方法
  18. java imageio 保存_java-ImageIO保存回原始大小
  19. 排序算法 之希尔排序及时间复杂度分析
  20. com、cn域名到期删除时间

热门文章

  1. 秒针系统网络广告交易平台介绍
  2. 简单快捷的人工智能相关小工具集合~
  3. iOS遇到的开发框架和优质博客,不断更新中
  4. EWS(Exchange Service)基本使用(Java)
  5. WordPress博客添加看板娘
  6. 线上出现死锁怎么解决?不看别后悔!!!
  7. 服务器维护委托合同,服务器维护委托合同
  8. 远离敏捷状态的 Scrum 框架
  9. 新能源整车控制器开发心得
  10. 5G PCC (Policy and Charging Control)