我想通过脚本等在我的 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。