pgsql kann eine Verbindung herstellen, pgadmin nicht

pgsql kann eine Verbindung herstellen, pgadmin nicht

Wir wollen nur 1 Rolle, die 1 Datenbank besitzt, Domain-Unix-Socket, kein Passwort

postgres@luciol-essai:~$ more /etc/postgresql/8.4/main/pg_hba.conf | grep jppstphp
local   essais_php  jppstphp                       trust
postgres@luciol-essai:~$ 

Erfolg mit psql:

envol@luciol-essai:~$ psql -U jppstphp essais_php
psql (8.4.15)
essais_php=> 

Fehler mit pgadmin3:

Das ist der Fehler.

Error connecting to the server: FATAL:  authentification Ident ?chou?e pour l'utilisateur << jppstphp >>

Antwort1

Es sieht so aus, als ob PgAdmin-III angewiesen wird, eine Verbindung zu localhostoder 127.0.0.1herzustellen, also verwendet es TCP/IP, während psql keine Hostspezifikation erhält und daher UNIX-Sockets ( local) verwendet.

Lassen Sie das Feld „Hostname“ in pgadmin3 leer oder fügen Sie einen weiteren pg_hba.confEintrag für hinzu host essais_php jppstphp 127.0.0.1/32 trust.

Antwort2

Sie sollten Ihre gesamte Datei überprüfen pg_hba.conf. Die Reihenfolge der Anweisungen ist wichtig. Ich nehme an, Sie haben die Standardzeile darin beibehalten:

local   all         all                               ident

Wenn diese Zeile vor Ihrer spezifischen Zeile über steht jppstphp, versucht der PostgreSQL-Server zunächst, Sie anhand Ihres UNIX-Benutzernamens zu identifizieren, der zu sein scheint envol. Dies schlägt fehl, da Sie versuchen, eine Verbindung als Postgres-Benutzer/-Rolle herzustellen jppstphp.

Wenn meine Annahme richtig ist, sollten Sie durch das Entfernen der obigen Zeile (und möglicherweise des ähnlichen Eintrags mit md5Kennwortauthentifizierung) oder das Platzieren Ihrer jppstphpZeile davor eine Verbindung über den lokalen Socket herstellen können.

Um eine Verbindung über den lokalen Socket herzustellen, müssen Sie lediglich das Host-Feld leer lassen, wie Sie es getan haben.

Antwort3

Hatte dasselbe Problem mit psql über die Befehlszeilenverbindung und pgAdmin, das keine Verbindung über RDS mit AWS herstellte. Ich hatte mein RDS auf öffentlich zugänglich eingestellt. Ich stellte sicher, dass meine ACL und Sicherheitsgruppen weit geöffnet waren, und trotzdem bestand das Problem. Also tat ich Folgendes: sudo find . -name *.conf Dann sudo nano ./data/pg_hba.conf fügte ich die Anweisungen oben in der Datei pg_hba.conf hinzu host all all 0.0.0.0/0 md5 und pgAdmin meldete mich automatisch an.

Nebenbei bemerkt, mein RDS war in meinem Standard-VPC. Ich hatte eine identische RDS-Instanz in meinem nicht standardmäßigen VPC mit identischen Sicherheitsgruppen-, ACL- und Sicherheitsgruppeneinstellungen wie in meinem Standard-VPC und konnte sie nicht zum Laufen bringen. Ich weiß nicht genau, warum, aber das ist Thema für einen anderen Tag.

verwandte Informationen