用户postgres的Psycopg2对等身份验证

时间:2016-11-10 21:18:11

标签: python postgresql psycopg2 ubuntu-16.04

我似乎已经正确安装了PostgreSQL 9.5.5。和Usntu 16.04上的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身份验证。

如何正确使用对等身份验证与用户" postgres"在Psycopg2?

4 个答案:

答案 0 :(得分:12)

对等身份验证的工作原理是将连接字符串中的Postgres用户名与运行脚本的Linux用户的名称进行比较。

尝试使用sudo -u postgres运行Python脚本。

答案 1 :(得分:5)

您需要提供主机

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

答案 2 :(得分:2)

这些是postgresql的一些认证方法

对等表示它将信任UNIX用户的身份(真实性)。因此,无需输入密码。

md5 表示它将始终要求输入密码,并在用MD5进行哈希处理后对其进行验证。

信任表示它永远不会要求输入密码,并且始终信任任何连接。

如果您遇到这种情况,您必须这样:

托管所有127.0.0.1/32身份

托管所有127.0.0.1/32 md5

托管所有::: / 128身份

托管所有::: 128 md5

答案 3 :(得分:1)

这就是yoru调用的样子。

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

conn.close()