有没有办法设置 postgres 来根据用户登录的用户身份对用户进行身份验证?

有没有办法设置 postgres 来根据用户登录的用户身份对用户进行身份验证?

我想通过脚本等在我的 postgres 数据库上运行查询,而不必执行我当前所做的事情:

sudo su - postgres
psql -U USER ...etc

这很麻烦,因为我必须输入 2 个不同的密码。有没有办法配置 postgres,让它看到我已经以与 postgres 用户名匹配的用户身份登录,然后就这样登录?

答案1

PostgreSQL 支持一种名为 peer 的身份验证方法,该方法在操作系统和数据库中查找连接用户的用户名,如果匹配则允许登录。该方法仅支持本地连接,可以在您的系统中进行配置,pga_hba.conf如下所示:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             postgres                                peer

只要您在 Linux 端以 postgres 用户身份运行脚本或连接,此配置就应该允许您以数据库 postgres 用户身份无需密码登录 PostgreSQL。

另请参阅 PostgreSQL 文档pg_hba.conf 文件对等身份验证

答案2

您可以使用用户名映射peer身份ident验证方法。

假设您有一个名为 的 Linux 用户admin。您应该在配置文件像这样的文件;

#local      database  user        auth-method  [auth-options]
local       all       postgres    peer         map=linuxusers

然后你应该在中创建用户映射配置文件

# MAPNAME       SYSTEM-USERNAME         PG-USERNAME
linuxusers      postgres                 postgres
linuxusers      sahap                    postgres
linuxusers      carson                   postgres

最后重新加载postgresql。

相关内容