PG防火墙配置文件pg_hba.conf介绍

0    600    2

Tags:

👉 本文共约1978个字,系统预计阅读时间或需8分钟。

注意:防火墙$PGDATA/pg_hba.conf文件和密码~/.pgpass文件的优先级是:先通过pg_hba.conf校验,若需要密码再去校验.pgpass文件。

该文件位于初始化安装的数据库目录下,例如:/var/lib/pgsql/11/data/pg_hba.conf,配置示例如下所示:

可以通过视图pg_hba_file_rules来查询该文件的内容(PG10新增)。pg_hba.conf修改后,使用pg_ctl reload重新读取pg_hba.conf文件。

每一行的格式为:

连接方式 连接的数据库 连接的用户 连接的主机IP 认证方式

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),主机名称以 .开头,samehostsamenet 匹配任意Ip地址

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

METHOD 参数设置

该值可以为"trust", "reject", "md5", "password", "scram-sha-256","gss", "sspi", "ident", "peer", "pam", "ldap", "radius" or "cert"

常用的认证方法有:
trust:无条件地允许联接,这个方法允许任何可以与PostgreSQL 数据库联接的用户以他们期望的任意 PostgreSQL 数据库用户身份进行联接,而不需要口令。

reject:联接无条件拒绝,常用于从一个组中"过滤"某些主机。

md5:要求客户端提供一个 MD5 加密的口令进行认证,这个方法是允许加密口令存储在pg_shadow里的唯一的一个方法。

password:和"md5"一样,但是口令是以明文形式在网络上传递的,我们不应该在不安全的网络上使用这个方式。注意:若为password则发送的为明文密码。

ident是Linux下PostgreSQL默认的local认证方式,凡是能正确登录服务器的操作系统用户(注:不是数据库用户)就能使用本用户映射的数据库用户不需密码登录数据库。用户映射文件为pg_ident.conf,这个文件记录着与操作系统用户匹配的数据库用户,如果某操作系统用户在本文件中没有映射用户,则默认的映射数据库用户与操作系统用户同名。比如,服务器上有名为user1的操作系统用户,同时数据库上也有同名的数据库用户,user1登录操作系统后可以直接输入psql,以user1数据库用户身份登录数据库且不需密码。很多初学者都会遇到psql -U username登录数据库却出现“username ident 认证失败”的错误,明明数据库用户已经createuser。原因就在于此,使用了ident认证方式,却没有同名的操作系统用户或没有相应的映射用户。解决方案:1、在pg_ident.conf中添加映射用户;2、改变认证方式。

注意
修改该配置文件中的参数,必须重启 postgreSql服务。

若要允许其它IP地址访问该主机数据库,则必须修改 postgresql.conf 中的参数 listen_addresses 为 `
重启:pg_ctl reload 或者 执行 SELECT pg_reload_conf()

示例

参数说明
host 参数表示安装PostgreSQL的主机
all 第一个all 表示该主机上的所有数据库实例
all 第二个all 表示所有用户
10.10.56.17/32 表示需要连接到主机的IP地址,32表示IPV4
md5 表示验证方式

即上述表示允许IP地址为10.10.56.17的所有用户可以通过MD5的密码验证方式连接主机上所有的数据库

也可以指定具体的数据库名称和 用户

即表示允许地址为 10.10.56.17 的用户 pgtest通过 MD5方式 加密的密码方式连接主机上的 test 数据库

也可以指定整个网段

即表示允许 任意iP 通过用户名为 pgtest 和md5的 密码 验证方式连接主机上 test 的数据库

不进行密码验证

表示任意IP地址的用户 pgtest 无需密码验证可直接连接访问该主机的 test 数据库

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部