当我尝试使用以下命令打开psql
时:
psql -U postgres
我得到这个错误:
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "postgres"
但当我使用以下命令时,它连接成功:
sudo -u postgres psql
有人能解释一下发生了什么以及如何诊断/修复这个问题吗?我的pg_hba.conf
包含以下内容:
# Database administrative login by Unix domain socket
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
# IPv6 local connections:
host all all ::1/128 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
4条答案
按热度按时间brgchamk1#
您可以使用编辑器编辑您的**.conf**文件,对于我的情况,它是nano。
通过添加以下行Map您的用户
将
<computer-username>
替换为System-Username,可以使用whoami命令找到该用户名。键入您的终端:然后转到pg_hba.conf
使用method=peer添加postgre用户,如下所示:
这对我很有效。
fjnneemd2#
Peer authentication表示仅当数据库用户名与操作系统用户名相同时才允许连接。
因此,如果您以操作系统用户
root
或jimmy
的身份运行psql -U postgres
,它将无法工作。您可以在
pg_ident.conf
中指定操作系统用户和数据库用户之间的mapping。krcsximq3#
uoifb46i4#
我不认为在生产中你会费心去改变任何文件。
所以,你可以做的是暂时使用户名相同的用户名,你的postgres通常是postgres通过传递命令
sudo -i -u postgres
,然后psql
,现在你成功地连接到postgres.