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.
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.
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.
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.