Postgresql提供的用户名和经过验证的用户名不匹配

Postgresql提供的用户名和经过验证的用户名不匹配

我正在尝试使用 PostgreSql 在自己的服务器上运行 tinyRSS。但是我一直收到此错误:

LOG:  provided user name (tinyrss) and authenticated user name (apache) do not match
FATAL:  Peer authentication failed for user "tinyrss"

我知道 postgresql 使用基于主机的身份验证,并且由于我没有与主机相同的帐户名(tinyrss),所以我需要使用用户名映射,因此我将这一行添加到pg_ident.conf

# MAPNAME       SYSTEM-USERNAME         PG-USERNAME
tinyrss hongyi tinyrss

并根据pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
# local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident map=tinyrss
# IPv6 local connections:
host    all             all             ::1/128                 ident

我可以知道我做错了什么以及解决办法吗?提前谢谢!

答案1

由于您正在使用ident身份验证并与具有操作系统帐户名的用户建立连接apache,因此您需要有一个到tinyrss的条目映射apache,正如消息暗示的那样。

以下行应该适合您pg_ident.conf

tinyrss apache tinyrss

答案2

我在这里留下我的提示,因为当我在谷歌寻找答案时,这个问题的搜索量很高。

如果您使用 SSL 身份验证,请确保您的 ~/.postgresql/postgresql.crt 通用名称与您尝试连接的用户相同。此用户必须在您尝试连接的服务器上的 pg_hba.conf 中定义。此外,您的客户端必须从允许的 IP/主机进行连接。

希望这对某人有帮助。

相关内容