我尝试了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:致命:用户';的对等身份验证失败;用户名';错误
未找到行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
参数的Add-h标志
首先,我将这一行添加到文件pg_hba.conf
的末尾
host all all 127.0.0.1/32 md5
-带有localhost
的h标志,输出:
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"
您希望将-h localhost
或-h 127.0.0.1
添加到psql参数中,以便可以应用以下身份验证规则:
host all 127.0.0.1/32 md5
(md5表示请求密码(。
当您省略-h选项时,它默认连接到Unix域套接字,因此连接尝试与local all all peer
行匹配"对等";意味着操作系统用户必须与数据库用户相同(由于-U ctvmUser
,情况并非如此(,并且密码被忽略。
或者,如果您希望使用密码对本地用户进行身份验证,请将local all all peer
替换为local all all md5
。