Postgresql psql:错误。FATAL:用户 "userrole "的对等认证失败

2 人关注

我已经安装了PostgreSQL并创建了一个具有超级用户权限的用户'userrole'。也能够通过python代码进行连接。

import psycopg2
conn = psycopg2.connect(
   database="postgres", user="userrole", password="userroot", host='127.0.0.1', port= '5432'
cursor = conn.cursor()
cursor.execute("select version()")
data = cursor.fetchone()
print("Connection established to: ",data)
conn.close()

This is my output:

Connection established to:  ('PostgreSQL 12.6 (Ubuntu 12.6-0ubuntu0.20.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, 64-bit',)
Process finished with exit code 0

我所面临的问题是通过CLI无法连接到这个用户。

(venv) resh@project:~/PycharmProjects/utilities$ sudo su -l userrole
[sudo] password for resh: 
su: user userrole does not exist

对不起,我是ubuntu的新手,现在我已经改变了命令,但仍然得到一个问题。

(venv) resh@project:~/PycharmProjects/utilities$ sudo psql -U userrole
[sudo] password for resh: 
psql: error: FATAL:  Peer authentication failed for user "userrole"
    
3 个评论
数据库用户与操作系统用户是不同的。 su 是关于操作系统用户的。
现在我正在尝试访问psql用户,但仍然面临这个问题 @LaurenzAlbe
由于我不知道你在做什么,我不能说你做错了什么。也许可以编辑这个问题并添加新的命令。
python
postgresql
ubuntu
Reshma Shyleshkumar
Reshma Shyleshkumar
发布于 2021-04-02
3 个回答
jjanes
jjanes
发布于 2022-05-19
已采纳
0 人赞同

你最近的psql尝试试图通过Unix套接字连接,(显然,根据错误信息)被配置为用户对等认证。

为了使用密码,你需要通过TCP连接,就像你的Python正在做的那样。

psql -U userrole -h 127.0.0.1

另外,sudo对于基于密码的认证是无用的,所以我把它删除了

Tim Roberts
Tim Roberts
发布于 2022-05-19
0 人赞同