【问题标题】:psql: error: could not connect to server: FATAL: Peer authentication failed for userpsql:错误:无法连接到服务器:致命:用户的对等身份验证失败
【发布时间】:2020-08-06 12:35:44
【问题描述】:

我尝试了 5 次以上使用简单密码进行身份验证。失败了,我然后重置密码并再次尝试:

owner@G700:~/cp/projFolder$ sudo -u postgres psql
psql (12.3 (Ubuntu 12.3-1.pgdg20.04+1))
Type "help" for help.

postgres=# alter user ctvmUser with password '1234';
ALTER ROLE
postgres=# \q

owner@G700:~/cp/projFolder$ psql -U ctvmUser -W -d callTrackVoipMs -a -f /home/owner/cp/projFolder/src/databaseScripts/createTables.sql;
Password: 
psql: error: could not connect to server: FATAL:  Peer authentication failed for user "ctvmUser"

在此尝试之后,我尝试复制/粘贴 1234,但仍然产生相同的错误。

我怀疑还有其他问题。还有什么可以阻止我使用 psql 进行身份验证?

我在 Lubuntu 20.04 上本地运行 PostgreSQL 12(并且预期的数据库交互是本地的)。

其他尝试

无 -W 标志

owner@G700:~/cp/projFolder$ psql -U ctvmUser -d callTrackVoipMs -a -f /home/owner/cp/projFolder/src/databaseScripts/createTables.sql;
psql: error: could not connect to server: FATAL:  Peer authentication failed for user "ctvmUser"

更新 pg_hba.conf

PG::ConnectionBad: FATAL: Peer authentication failed for user 'username' error

未找到local all all local 行:

# 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                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

使用 localhost 参数添加 -h 标志

首先我将这一行添加到文件pg_hba.conf的最末尾

host    all             all             127.0.0.1/32            md5

-h 标志localhost,并输出:

owner@G700:~/cp/voip_call_track_backend$ psql -U ctvmUser -d callTrackVoipMs -a -f /home/owner/cp/voip_call_track_backend/src/databaseScripts/createTables.sql -h localhost;
Password for user ctvmUser: 

psql: error: could not connect to server: FATAL:  password authentication failed for user "ctvmUser"
FATAL:  password authentication failed for user "ctvmUser"

【问题讨论】:

    标签: postgresql psql


    【解决方案1】:

    您想将-h localhost-h 127.0.0.1 添加到 psql 参数中,以便可以应用此身份验证规则:

    托管所有 127.0.0.1/32 md5

    (md5 表示要求输入密码)。

    当您省略 -h 选项时,它默认连接到 Unix 域套接字,因此连接尝试与 local all all peer 行匹配。 “peer”表示操作系统用户必须与数据库用户相同(由于-U ctvmUser,情况并非如此)并且密码被忽略。

    或者,如果您希望使用密码对本地用户进行身份验证,请将 local all all peer 替换为 local all all md5

    【讨论】:

    • 谢谢你,我在仔细输入1234作为密码后更新了顶帖
    • @SeanD:检查数据库中用户名的确切大小写(psql 中的 \du)。可能是ctvmuser,而不是ctvmUser。然后在命令行上使用 -U ctvmuser。命令行区分大小写,而 SQL 进行大小写折叠(不区分大小写,除非名称用双引号括起来)。
    • 是的,你是对的,我还必须将 dbname 小写,谢谢
    猜你喜欢
    • 2020-02-25
    • 1970-01-01
    • 2013-06-30
    • 2015-02-17
    • 2011-02-25
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    相关资源
    最近更新 更多