0

我通过在以下内容中md5为用户配置了身份验证:foopg_hba.conf

# TYPE    DATABASE    USER    ADDRESS    METHOD
local     all         foo                md5

当我尝试以psqlLinux 用户身份连接(使用)时foopsql要求输入密码并且连接成功。但是,如果我psql以其他 Linux 用户身份运行,我会收到以下错误:

psql: FATAL:  password authentication failed for user "foo"

这种行为的原因是什么?我的印象是,只有在我使用peerorident身份验证方法时才需要这样做。

编辑:我正在使用命令psql -U foo -W进行连接。当我在命令前面加上sudo -u foo它的前缀时;当我不这样做时,它会给出上述错误。很抱歉在发布原始问题时没有提及这一点!

编辑2:

以下是我按顺序排列的所有未注释行pg_hba.conf

# TYPE    DATABASE    USER        ADDRESS        METHOD
local     all         postgres                   peer
local     all         foo                        md5
local     all         all         127.0.0.1/32   md5
local     all         all         ::1/128        md5
4

2 回答 2

1

如果您不指定数据库,它将尝试连接到与 Linux 用户同名的数据库。如果您登录bar并执行以下操作:

psql -U foo -W

它将尝试bar与用户一起登录到数据库foo。要从登录连接到foo数据库,bar请执行以下操作:

psql -U foo -W foo
于 2013-05-03T11:03:57.113 回答
0

psql默认为当前用户。使用-U标志来选择数据库“角色”。

Postgres 角色和系统用户是分开的,尽管可以将身份验证配置为针对系统自己的 (pam/ldap/etc) 工作。

于 2013-05-03T09:22:07.070 回答