web-dev-qa-db-ja.com

ユーザーpostgresのPsycopg2ピア認証

PostgreSQL 9.5.5を正しくインストールしたようです。そしてUbuntu 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認証を有効にしません。

Psycopg2のユーザー「postgres」でピア認証を正しく使用するにはどうすればよいですか?

11
Yuri Lifanov

ピア認証は、接続文字列のPostgresユーザー名を、スクリプトを実行しているLinuxユーザーの名前と比較することで機能します。

PythonスクリプトをSudo -u postgresで実行してみてください。

13
Nick Barnes

ホストを提供する必要があります

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

これは、ヨルコールがどのように見えるべきかということです。

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

conn.close()
1
Illusionist