it-swarm.com.de

pgadmin gibt mir den Fehler: kein Passwort angegeben

Ich habe postgresql 9.2 auf Linux (kubuntu) und der letzten Version von pgadmin3 installiert, aber wenn ich sie verbinde, habe ich diesen Fehler

Es ist ein Fehler aufgetreten: Fehler beim Verbindungsaufbau zum Server: fe_sendauth: Kein Kennwort angegeben

Was kann ich machen?

Ich habe Tomcat auch für meine Webanwendung in Java konfiguriert. Postgresql funktionierte tatsächlich, bevor ich meine Anwendung ausprobierte.

14
DarkCoffee

Ob ein Passwort erforderlich ist, hängt von Ihren Einstellungen in pg_hba.conf ab. Es gibt verschiedene Möglichkeiten, eine Verbindung herzustellen - möglicherweise gelten andere Einstellungen in pg_hba.conf.

Ich zitiere die mit pgAdmin gelieferte Hilfe für das Feld "Host" in den Verbindungseinstellungen ("Server"):

Der Host ist die IP-Adresse des zu kontaktierenden Rechners oder die vollständige qualifizierter Domainname Auf Unix-basierten Systemen kann das Adressfeld .__ sein. leer gelassen, um den Standard-PostgreSQL-Unix-Domänensocket für die .__ zu verwenden. lokaler Computer oder auf einen alternativen Pfad gesetzt werden, der ein PostgreSQL-Postfach enthält Steckdose. Wenn ein Pfad eingegeben wird, muss er mit einem "/" beginnen. Der Hafen Nummer kann auch angegeben werden.

Wenn Sie eine Verbindung über einen Unix-Socket herstellen, gelten die Regeln für "local" . Bei der Verbindung über TCP/IP gelten die Regeln "Host" (oder "hostssl").

Wenn Sie eine solche Zeile oben in Ihrer Datei pg_hba.conf haben:

local    all     all     peer

oder:

local    all     all     ident

.. dann können Sie lokal ohne Kennwort eine Verbindung herstellen, wenn Ihr Systembenutzer "postgres" und Ihr Datenbankbenutzer auch "postgres" ist.

10

Mir ist klar, dass diese Frage Jahre alt ist, aber ich bin heute auf dieses Problem gestoßen und habe eine Lösung, die trust auf eine begrenzte, aber nützliche Weise verwendet.

Wie in vielen Entwicklungsgeschäften, wenn die Entwickler ein QA-Postgres-Passwort benötigen, schreien sie es einfach an, schreiben es, mailen es, schreiben es auf die Stirn usw. Und ich sage: "Das ist wirklich schlecht einen Weg, um PKI hier zu verwenden. " Wir verwenden auch pgAdmin3.

Fügen Sie Ihrer pg_hba.conf zunächst eine Zeile wie diese hinzu, wobei dev den Benutzer für die Entwickler in Ihrem Shop darstellt:

Host all dev 127.0.0.1/32 trust

Legen Sie den öffentlichen Schlüssel der Entwickler in ihrem authorized_keys-Ordner auf dem Datenbankserver ab. Jetzt haben Sie ssh in den Server mit dem Flag -L mit einem Befehl ähnlich dem folgenden: 

ssh -i ~/.ssh/id_rsa -L5432:127.0.0.1:5432 -vvv 101.102.103.104

Dadurch kann der Postgres-Port wie ein Localhost verwendet werden. Ersetzen Sie natürlich den Schlüssel und den Server, und stellen Sie sicher, dass Sie einen lokalen Port lokal zuordnen (wenn Sie lokale Postgres ausführen, ist dies wahrscheinlich an 5432 gebunden). Ich verwende ein ziemlich ausführliches Flag, damit ich ssh-Probleme leicht beheben kann.

Öffnen Sie ein anderes Terminal und geben Sie diesen Befehl ein:

psql -h 127.0.0.1 -U dev -p 5432

Sie sollten Zugriff auf die Datenbank haben und niemals zur Eingabe eines Kennworts aufgefordert werden, was meiner Meinung nach großartig ist. Andernfalls verzichten die Entwickler auf das Kennwort mit wenig Rücksicht auf die Sicherheit und verteilen es wie Halloween-Süßigkeiten.

Ab sofort werden Sie von PgAdmin3 immer noch zur Eingabe eines Kennworts aufgefordert, auch wenn Sie es - ganz wie der Tag - nicht benötigen. Andere Postgres-GUIs werden dies jedoch nicht tun. Versuchen Sie es mit Postico. Es ist in der Beta, funktioniert aber super.

Ich hoffe, diese Antwort hilft jedem wie mir, der PKI lieber für die Postgres-Authentifizierung nutzt, als die Passwörter beliebig zu teilen. 

6
bbuckley123

Triff dieses Problem vor kurzem.

Wenn Sie PostgreSQL auf einem lokalen Computer verwenden und psql ohne Protokollierung funktioniert, probieren Sie das Menü File - Add Server - Properties tab von pgadmin3 aus, füllen Sie das Feld Name für diese Verbindung aus, lassen Sie das Feld Host und das Feld Password leer, und klicken Sie auf ok.

von pgadmin docs

Auf Unix-basierten Systemen kann das Adressfeld leer bleiben, um die .__ zu verwenden. Standard PostgreSQL Unix Domain Socket auf dem lokalen Computer oder als .__ festgelegt werden. zu einem alternativen Pfad, der einen PostgreSQL-Socket enthält. Wenn ein Pfad ist eingegeben, muss es mit einem „/“ beginnen.

Arbeitete bei Debian-Tests (pgadmin3 1.22, PostgreSQL 11), ohne pg_hba.conf zu berühren.

0
zhazha