PostgreSQL hba 文件的作用
PostgreSQL About 3,217 words作用
hba:host based authentication基于主机的认证。
说明
修改了hba文件后,需要重启服务或者reload配置。
select pg_reload_conf();
查看 hba 文件位置
show hba_file;
输出
postgres=# show hba_file;
hba_file
--------------------------------------------------------------------------
/Users/fendoudebb/Library/Application Support/Postgres/var-15/pg_hba.conf
(1 row)
文件内容
# TYPE DATABASE USER ADDRESS METHOD
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
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
也可以使用SQL查看hba文件内容。
select pg_read_file('pg_hba.conf');
查看 hba 规则
hba文件会映射到pg_hba_file_rules这张表中。
select * from pg_hba_file_rules;
输出
postgres=# select * from pg_hba_file_rules;
line_number | type | database | user_name | address | netmask | auth_method | options | error
-------------+-------+---------------+-----------+-----------+-----------------------------------------+-------------+---------+-------
89 | local | {all} | {all} | | | trust | |
91 | host | {all} | {all} | 127.0.0.1 | 255.255.255.255 | trust | |
93 | host | {all} | {all} | ::1 | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | trust | |
96 | local | {replication} | {all} | | | trust | |
97 | host | {replication} | {all} | 127.0.0.1 | 255.255.255.255 | trust | |
98 | host | {replication} | {all} | ::1 | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | trust | |
(6 rows)
字段含义
TYPE
连接类型,允许连接数据库的方式。
local:通过Unix socket的方式连接。host:通过TCP/IP的方式连接,它能匹配SSL和non-SSL连接。hostssl:只允许SSL连接。hostnossl:只允许non-SSL连接。
DATABASE
可连接的数据库。
除了特殊值之外,可以指定具体的数据库,可以用,逗号分割多个数据库。
all:所有数据库。sameuser:可连接和用户名相同的数据库。samerole:可连接和角色名相同的数据库。replication:允许复制连接,用于集群环境下的数据库同步。
USER
可连接数据库的用户。
all:匹配所有用户。- 指定具体的数据库用户名。
- 指定具体的数据库用户组,需要在前面加上
+(如:+admin)。
ADDRESS
可连接数据库的地址。
all:允许所有IP地址。samehost:允许该服务器的IP地址。samenet:允许该服务器子网下的IP地址。ipaddress/netmask:具体的IP地址(如:192.168.1.1⁄32),支持IPv4与IPv6。- 如果上面几种形式都匹配不上,就会被当成是
hostname。 注意: 只有 host, hostssl, hostnossl 会应用个字段。
METHOD
连接数据库时的认证方式。
trust:无条件通过认证。reject:无条件拒绝认证。md5:用md5加密密码进行认证。password:用明文密码进行认证,不建议在不信任的网络中使用。ident:从一个ident服务器 (RFC1413) 获得客户端的操作系统用户名并且用它作为被允许的数据库用户名来认证,只能用在TCP/IP的类型中 (即host,hostssl,hostnossl)。peer:从内核获得客户端的操作系统用户名并把它用作被允许的数据库用户名来认证,只能用于本地连接 (即local)。- 其他特殊值可以在官方文档中查阅。 简单来说,
ident和peer都要求客户端操作系统中存在对应的用户。 注意: 上面列举的只有md5和password是需要密码的,其他方式都不需要输入密码认证。
参考文档
https://scarletsky.github.io/2017/04/26/client-authentication-in-postgresql/
官方文档
https://www.postgresql.org/docs/current/auth-pg-hba-conf.html
Views: 1,291 · Posted: 2023-10-27
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...