Wydaje mi się, że poprawnie zainstalowałem PostgreSQL 9.5.5. i Psycopg2 na Ubuntu 16.04 i może zalogować się przez:
sudo -u postgres psql
Jeśli wtedy wystawię conninfo
, Otrzymuję następujące informacje:
You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
Z pewnością powinienem być w stanie połączyć się przez psycopg2 w taki sam sposób, jak pokazano tutaj, ale skrypt:
#!/usr/bin/python
import psycopg2
conn = psycopg2.connect("dbname=postgres user=postgres")
conn.close()
daje mi:
psycopg2.OperationalError: FATAL: Peer authentication failed for user "postgres"
Chcę tylko PostgreSQL do użytku osobistego, więc nie chcę włączać uwierzytelniania TCP.
Jak poprawnie korzystać z uwierzytelniania równorzędnego z posterem użytkownika w Psycopg2?
Odpowiedzi:
8 dla odpowiedzi № 1Uwierzytelnianie równorzędne działa poprzez porównanie nazwy użytkownika Postgres w ciągu połączenia z nazwą użytkownika systemu Linux, który uruchamia skrypt.
Spróbuj uruchomić skrypt Pythona za pomocą sudo -u postgres
.
4 dla odpowiedzi nr 2
Musisz dostarczyć gospodarzowi
conn = psycopg2.connect("dbname="template1" user="dbuser" host="localhost" password="dbpass"")
1 dla odpowiedzi nr 3
To jest rodzaj tego, jak powinno wyglądać połączenie.
!/usr/bin/python
import psycopg2
conn = psycopg2.connect(database="postgres", user="postgres", password="postgres", port=5432)
conn.close()