PostgreSQL 中 pg_ident.conf 配置及应用

pg_ident.conf 是 PostgreSQL 的一个配置文件,用于配置用户身份映射,以便允许系统用户(操作系统用户)以数据库用户的身份连接到 PostgreSQL 数据库。这在使用 IDENT 或 PEER 认证方法时特别有用。

1、文件位置

默认情况下,pg_ident.conf 文件位于 PostgreSQL 数据目录中。你可以通过查看 PostgreSQL 配置文件 postgresql.conf 来确认其路径:

SHOW ident_file;

pg_ident.conf 格式
pg_ident.conf 文件的格式非常简单,每行包含三个字段:

  • MAPNAME:映射名称,可以是任意字符串。
  • SYSTEM-USERNAME:操作系统用户名。
  • PG-USERNAME:PostgreSQL 数据库用户名。

字段之间以空格或制表符分隔。例如:

# MAPNAME   SYSTEM-USERNAME   PG-USERNAME
mymap       osuser1           dbuser1
mymap       osuser2           dbuser2
othermap    osuser3           dbuser3

2、示例配置

假设你有以下需求:

操作系统用户 alice 映射到 PostgreSQL 用户 pg_alice
操作系统用户 bob 映射到 PostgreSQL 用户 pg_bob
你可以这样配置 pg_ident.conf:

# This is the pg_ident.conf file.
# MAPNAME   SYSTEM-USERNAME   PG-USERNAME

mymap       alice             pg_alice
mymap       bob               pg_bob

3、配置 pg_hba.conf 使用映射

SHOW hba_file;

要使这些映射生效,还需要配置 pg_hba.conf 文件,并指定使用 IDENT 或 PEER 认证方法以及对应的映射名称。

假设你希望本地连接使用 IDENT 认证和你定义的映射 mymap,可以如下配置 pg_hba.conf:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# Allow local connections using the "mymap" ident map
local    all             all                                     ident map=mymap

或者,如果你使用的是 PEER 认证(通常在 Unix 系统上用于本地连接):

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# Allow local connections using the "mymap" peer map
local    all             all                                     peer map=mymap

4、完整示例

假设你的需求是:

操作系统用户 os_user1 映射到 PostgreSQL 用户 db_user1
操作系统用户 os_user2 映射到 PostgreSQL 用户 db_user2

pg_ident.conf 配置:
# This is the pg_ident.conf file.
# MAPNAME   SYSTEM-USERNAME   PG-USERNAME

mymap       os_user1          db_user1
mymap       os_user2          db_user2

pg_hba.conf 配置:
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# Allow local connections using the "mymap" ident map
local    all             all                                     ident map=mymap

5、重启 PostgreSQL 服务

每次修改 pg_ident.conf 或 pg_hba.conf 文件后,必须重载或重启 PostgreSQL 服务以使配置生效:

sudo systemctl reload postgresql-14

或者:

sudo systemctl restart postgresql-14

6、验证配置

修改配置文件并重启服务后,你可以尝试以操作系统用户的身份连接到 PostgreSQL,验证映射是否有效:

sudo -u os_user1 psql -U db_user1

如果配置正确,你应该能够成功登录到 PostgreSQL。

7、总结

通过配置 pg_ident.conf 文件,你可以灵活地将操作系统用户映射到 PostgreSQL 用户,从而实现安全的用户管理和认证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值