PostgreSQL pg_hba.conf 文件简析

pg_hba.conf文件存放在数据库集群的数据目录里。

HBA 的意思是 host-based authentication:基于主机的认证。在initdb初始化数据目录的时候,它会安装一个缺省的文件。

文件pg_hba.conf的常用格式是一套记录,每行一条。空白行被忽略,井号( # )开头的注释也被忽略并且记录不能跨行存在。

每条记录声明一种联接类型、一个客户端 IP 地址范围(如果和联接类型相关的话)、一个数据库名、一个用户名字以及对匹配这些参数的联接使用的认证方法。

第一条匹配联接类型、客户端地址和联接企图请求的数据库名和用户名的记录将用于执行认证。


下面是常用的pg_hba.conf配置:

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# "local" is for Unix domain socket connections only
local all all ident
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5

TYPE定义了多种连接PostgreSQL的方式,分别是:

  • “local”使用本地unix套接字

  • “host”使用TCP/IP连接(包括SSL和非SSL)

  • “host”结合“IPv4地址”使用IPv4方式

  • 结合“IPv6地址”则使用IPv6方式

  • “hostssl”只能使用SSL TCP/IP连接

  • “hostnossl”不能使用SSL TCP/IP连接

DATABASE指定哪个数据库、多个数据库、库名间以逗号分隔。“all”只有在没有其他条目符合时才代表“所有”,如果有其他条目符合则代表“除了该条之外的”,因为“all”的优先级最低。如下例:

local testdb test reject
local all all ident

这两条都是指定local访问方式,因为前一条指定了特定的数据库testdb,所以后一条的all代表的是除了tesstdb之外的数据库,同理,用户的all也是如此。

USER指定哪个数据库用户(PostgreSQL正规的叫法是角色,role)。多个用户以逗号分隔。

CIDR-ADDRESS项local方式不必填写,该项可以是IPv4地址或IPv6地址,可以定义某台主机或某个网段。

METHOD指定如何处理客户端的认证。常用的有ident、md5、password、trust、peer、reject。其中ident和peer模式仅适用于Linux、Unix和Max,不适用于Windows。

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

1、在pg_ident.conf中添加映射用户;

2、改变认证方式。

md5是常用的密码认证方式,如果你不使用ident,最好使用md5。密码是以md5形式传送给数据库,较安全,且不需建立同名的操作系统用户。

password是以明文密码传送给数据库,建议不要在生产环境中使用。

trust是只要知道数据库用户名不需要密码或ident就能登录,建议不要在生产环境中使用。

peer是使用连接发起端的操作系统名进行身份验证。仅限于Linux、BSD、Mac OS X和Solaris,并且仅可用于本地服务器发起的连接。

reject是拒绝认证。

即使是针对同一个数据库,多种身份验证模式可以同时使用。对于每一个连接请求,postgres服务器会按照pg_hba.conf文件中记录的规则条目自上而下进行检查。

当匹配到第一条满足条件的规则时,就不再向下检查。如果到文件末尾都没有搜到匹配的规则,那么按默认规则处理,即拒绝该链接。

本地使用psql登录数据库,是以unix套接字附合local的方式。

使用PGAdmin3或php登录数据库,不论是否本地,均是以TCP/IP附合host的方式。如果是本地(数据库地址localhost),CIDR-ADDRESS则为127.0.0.1/32。

例:

1、允许本地使用PGAdmin3登录数据库,数据库地址localhost,用户test,数据库testdb:

host testdb test 127.0.0.1/32 md5

2、允许192.168.116.12~192.168.116.12.255网段登录数据库:

host all all 192.168.116.12/24 md5

3、信任192.168.116.12登录数据库:

host all all 192.168.116.12/32 trust

pg_hba.conf修改后,使用pg_ctl reload重新读取pg_hba.conf文件,如果pg_ctl找不到数据库,则用-D /…/pgsql/data/ 指定数据库目录,或export PGDATA=/…/pgsql/data/ 导入环境变量。

如果是在linux以服务的形式安装的,那么执行:

命令:

service postgresql-9.5 reload 执行时输入对应安装的数据库版本

另外一种加载配置文件的方法是以超级用户登录到任何一个数据库后执行:

命令:

select pg_reload_conf();

以下提供官方文档对pg_hba.conf文件的解释:

官方文档英文版地址:https://www.postgresql.org/docs/13/auth-pg-hba-conf.ht

官方文档中文版地址:http://www.postgres.cn/docs/11/auth-pg-hba-conf.html

墨天轮原文链接:https://www.modb.pro/db/25634(复制到浏览器或者点击“阅读原文”立即查看)
END
(0)

相关推荐

  • postgre psql 命令行连接

    在 Shell 命令行中,使用 postgresql-client 连接 PostgreSQL 数据库时,每次都要输入密码.如果要写 Shell Script,做一些类似于备份的自动化管理工作,每次都 ...

  • navicat 连接postgresql报错pg

    PostgreSQ数据库为了安全,它不会监听除本地以外的所有连接请求,当用户通过JDBC访问是,会报一些如下的异常: org.postgresql.util.PSQLException: FATAL: ...

  • PostgreSQL数据目录深度揭秘

    一  概述 PostgreSQL是一个功能非常强大的.源代码开放的客户/服务器关系型数据库管理系统(RDBMS),PostgreSQL被业界誉为"先进的开源数据库",支持NoSQL ...

  • 初三就能上清华,简析邱班新领军分省录取情况,有你的省份吗?

    3月,清华大学丘成桐数学科学领军人才培养计划(以下简称「数学领军计划」)和丘成桐数学英才班综合测试结果正式出炉.据网络公开数据统计,今年的首届「数学领军计划」共入围 60 余人. 这 60 余人来自全 ...

  • 孙福奎‖简析孙文题龙潭沟瀑布楹联

    简析孙文题龙潭沟瀑布楹联 孙福奎 黑龙江诗联家孙文老师写了不少脍炙人口的作品,近读他的一副<题西峡龙潭沟瀑布>联(见<联斋>2021年第1171期),深被其妙笔折服.下面试作简 ...

  • 交易法之常见形态:圆弧形、多重形、头肩形简析!

    在所有的形态之中,我们最常见的方要有三种:圆弧形:多重形:头肩形. 一. 圆弧形 图一: 在各种图形形态之中,圆弧顶(底)所酝酿的时间是最长的.当圆弧顶在形态开始形成迹象之时,我们思维上必须坚决抑制自 ...

  • 诸子百家精华50句,字字珠玑、每一句都值得背诵(附简析)

    儒 家1.市之无虎明矣,三人言而成虎.--<新序∙杂事篇>判断一件事情的真伪,必须经过细心考察和思考,不能道听途说.2.富贵不足以益,贫贱不足以损.--<孔子家语∙五仪解>富贵 ...

  • 马天明:简析湿热之三焦与卫气营血辨证在皮肤科的应用

    北京中医医院皮肤科 开放  共享  积极  共赢 每周三 12:00 追更新 · 右上请标星 及时见 · 右下点在看 · 作者简介 · 马天明,副主任医师,医学博士(后),黑龙江中医药大学附属第二医院 ...

  • 【每月先驱】最新比赛META及套牌推荐+环境简析01/08

    [每月先驱]最新比赛META及套牌推荐12/04 以下是12月05日至12月27日这4个周末共8场先驱挑战赛的统计 其他包括: 红绿快攻x3 蓝黑控制x3 红黑奥术师x3 四色复归荒野(WUBG)x3 ...

  • 标准后欧那斯时代环境简析

    禁牌表更新!欧那斯.幸运苜蓿.逃往幻野被禁 不需要面对欧那斯的恶心的回血能力后,过去被压制的快攻套牌得以抬头.幸运苜蓿被禁,也给了蓝色控制套牌非常大的希望.标准构筑结束了ramp套牌的统治,并且禁掉了 ...

  • 孔子语录精选100句·附简析

    孔子(公元前551年9月28日-公元前479年4月11日),子姓,孔氏,名丘,字仲尼,鲁国陬邑(今山东曲阜)人,祖籍宋国,中国古代思想家.教育家,儒家学派创始人.一百句孔子语录精选1.孔子语录:大学之 ...

  • 九百句古诗词名句·简析(六)

    古代诗词名句900句简析6751.黔驴之技,技止此耳黔:今贵州.柳宗元<三戒·黔之驴>:"黔无驴,有好事者船载以入,至则无可用,放之山下,虎见之,庞然大物也,以为神,蔽林间窥之. ...