![Postgresql提供的用户名和经过验证的用户名不匹配](https://linux22.com/image/644794/Postgresql%E6%8F%90%E4%BE%9B%E7%9A%84%E7%94%A8%E6%88%B7%E5%90%8D%E5%92%8C%E7%BB%8F%E8%BF%87%E9%AA%8C%E8%AF%81%E7%9A%84%E7%94%A8%E6%88%B7%E5%90%8D%E4%B8%8D%E5%8C%B9%E9%85%8D.png)
我正在尝试使用 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/主机进行连接。
希望这对某人有帮助。