用户postgres的Psycopg2对等身份验证

Yur*_*nov 8 python postgresql psycopg2 ubuntu-16.04

我似乎已经正确安装了PostgreSQL 9.5.5.和Usntu 16.04上的Psycopg2,可以通过以下方式登录:

sudo -u postgres psql
Run Code Online (Sandbox Code Playgroud)

如果我然后发出\conninfo,我得到以下内容:

You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
Run Code Online (Sandbox Code Playgroud)

当然我应该能够通过psycopg2以与此处所示相同的方式连接,但脚本:

#!/usr/bin/python
import psycopg2
conn = psycopg2.connect("dbname=postgres user=postgres") 
conn.close()
Run Code Online (Sandbox Code Playgroud)

给我:

psycopg2.OperationalError: FATAL:  Peer authentication failed for user "postgres"
Run Code Online (Sandbox Code Playgroud)

我只想要PostgreSQL供个人使用,所以我不想启用TCP身份验证.

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

Nic*_*nes 13

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

尝试运行Python脚本sudo -u postgres.


小智 7

您需要提供主机

conn = psycopg2.connect("dbname='template1' user='dbuser' host='localhost' password='dbpass'")
Run Code Online (Sandbox Code Playgroud)