web-dev-qa-db-fra.com

Authentification par les pairs Psycopg2 pour les postgres utilisateur

Il me semble avoir correctement installé PostgreSQL 9.5.5. et Psycopg2 sur Ubuntu 16.04, et peuvent se connecter via:

Sudo -u postgres psql

Si j'émets alors \conninfo, J'obtiens ce qui suit:

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

Je devrais sûrement être en mesure de me connecter via psycopg2 de la même manière que montré ici , mais le script:

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

donne moi:

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

Je ne veux que PostgreSQL pour un usage personnel, donc je ne veux pas activer l'authentification TCP.

Comment utiliser correctement l'authentification de pair avec l'utilisateur "postgres" dans Psycopg2?

11
Yuri Lifanov

L'authentification par les pairs fonctionne en comparant le nom d'utilisateur Postgres dans votre chaîne de connexion au nom de l'utilisateur Linux qui exécute le script.

Essayez d'exécuter votre script Python avec Sudo -u postgres.

13
Nick Barnes

Vous devez fournir l'hôte

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

C'est en quelque sorte à quoi devrait ressembler votre appel.

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

conn.close()
1
Illusionist