2016-11-10 82 views
3

我似乎已经正确安装了PostgreSQL 9.5.5。和Psycopg2在Ubuntu 16.04,并且可以通过登录:用户postgress Psycopg2同行认证

sudo -u postgres psql 

如果我再发出\conninfo,我得到如下:

You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432". 

当然我应该能够通过psycopg2以同样的方式来连接如图所示here,但脚本:

#!/usr/bin/python 
import psycopg2 
conn = psycopg2.connect("dbname=postgres user=postgres") 
conn.close() 

给我:

psycopg2.OperationalError: FATAL: Peer authentication failed for user "postgres" 

我只想PostgreSQL用于个人用途,所以我不想启用TCP认证。

如何在Psycopg2中正确使用用户“postgress”的同级身份验证?

+0

'须藤-u postgres'运行您的Python脚本? –

+0

谢谢,由于'sudo -u postgres'修复了一切。你可以发表这个答案,以便我可以接受吗? –

回答

3

对等身份验证通过比较连接字符串中的Postgres用户名和正在运行该脚本的Linux用户的名称来工作。

尝试运行您的Python脚本sudo -u postgres

0

这是如何yoru电话应该看起来像。

!/usr/bin/python 
import psycopg2 
conn = psycopg2.connect(database="postgres", user="postgres", password="postgres", port=5432) 

conn.close() 
+0

这给了我'致命:密码认证失败的用户“postgres”'我认为密码意味着TCP认证。我如何设置本地主机? –

+0

现在我回到'psycopg2.OperationalError:致命:用户“postgres”的对等身份验证失败' –

+0

您可以启用无密码登录并从连接中删除pw字段吗? sudo -u postgres psql postgres – Illusionist

4

您需要提供您是否使用主机

conn = psycopg2.connect("dbname='template1' user='dbuser' host='localhost' password='dbpass'") 
+0

问题指定'PEER'认证。 – user1071847