PgAdmin III - Wie verbinde ich mich mit der Datenbank, wenn das Passwort leer ist?


21

Ich habe PostgreSQL 9.1 auf meinem PC installiert (Win 7). Ich habe eine kleine Java-Anwendung, die sich erfolgreich mit login=saund verbindet password="". Die Verbindung funktioniert.

Es wird jedoch von PgAdmin III selbst abgelehnt. Ich bekomme:

Error connecting to the server: fe_sendauth: no password supplied

Wie verbinde ich mich von PgAdmin III aus mit meiner Datenbank mit einem leeren Passwort?

BEARBEITEN

Dies ist nur ein Test, kein Seriencode.


Ich weiß es nicht genau, aber es ist leicht vorstellbar, dass PgAdmin das nicht unterstützt.
Peter Eisentraut

Befindet sich Ihre Java-App auf demselben Client wie pgAdmin?
Jack Douglas

Antworten:


10

Ich kann von pgAdmin III aus eine Verbindung zu meiner postgres-Instanz herstellen, ohne ein Kennwort für einen Benutzer, einschließlich Superuser wie postgres.

Da Sie von einem anderen Client aus eine Verbindung herstellen, gibt es keinen Grund, warum Sie keine Verbindung von pgAdmin aus herstellen sollten, wenn sich diese auf derselben Arbeitsstation befinden - es sei denn, eine Firewall-Regel auf dem Client selbst lässt ein Programm zu, aber kein anderes.

Wenn das Problem für diesen Client spezifisch ist, müssen Sie möglicherweise eines oder mehrere der folgenden Elemente ändern:

  • pg_hba.conf
Host sa alle 192.168.0.nnn / 32 vertrauen
  • postgresql.conf
listen_addresses = '*'
  • die Firewall auf Ihrem Postgres-Server, zB iptables:
-A INPUT -s 192.168.0.nnn -m state --state NEW -j ACCEPT

Aber ich empfehle Ihnen, nichts davon zu tun. Das Handbuch besagt Folgendes aus gutem Grund:

Die Vertrauensauthentifizierung ist nur für TCP / IP-Verbindungen geeignet, wenn Sie jedem Benutzer auf jedem Computer vertrauen, der über die Zeilen pg_hba.conf, die die Vertrauenswürdigkeit angeben, eine Verbindung zum Server herstellen darf. Es ist selten sinnvoll, Vertrauen für andere TCP / IP-Verbindungen als die von localhost (127.0.0.1) zu verwenden.

Betrachten Sie stattdessen entweder:

  • mit einem Passwort und md5 Identifikation
  • Tunneling Port 5432 über SSH

31

Ich habe diese Antwort woanders gefunden.

Wenn sich Ihre Datenbank auf dem lokalen Host befindet, lassen Sie das Host-Feld in der Verbindung leer, anstatt "localhost" oder "127.0.0.1" zu verwenden. Dies weist PgAdmin an, eine Verbindung über den lokalen Unix-Socket anstelle von TCP herzustellen.


Fügen wir hinzu, dass die ursprüngliche Frage ein Windows-System betraf.
Dezso

3
Ah das war genau das. Host leer lassen hat funktioniert.
Basistage finden am

Sie können dieses Feld nicht leer lassen, es ist erforderlich.
Athlan

Es sieht so aus, als würde es nur funktionieren, wenn Sie eine Rolle in pg haben, die als Ihr Systembenutzername angegeben ist (unter Linux). Andernfalls werden vermutlich Benutzerkarten benötigt.
Uhr

Perfekt! Mit einer Neuinstallation von postgresql und pgadmin können Sie alles zum Laufen bringen, wenn Sie pg_hba.confdas Wort truststatt peerin dieser Zeile - ändern local all postgres trustund die Felder host und password in pgadmin leer lassen. Ich wünschte, pgadmin würde ein Kontrollkästchen zum Wechseln zu Sockets anstelle dieser schwer zu erkennenden Benutzeroberfläche hinzufügen.
Anupam Jain
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.