Remote-Verbindung zu PostgreSQL auf einer Amazon EC2-Instanz mithilfe von PgAdmin nicht möglich

9

Ich habe eine kostenlose RHEL 6-Instanz auf Mikroebene, auf der postgresql 9.2 mit den yum-Anweisungen installiert ist: Ссылка

Und ich kann mich lokal mit dem PG-Server verbinden, indem ich diesen auf dem Server verwende:

%Vor%

Allerdings habe ich nie erfolgreich außerhalb der Box verbunden. Die Fehlermeldung sieht wie folgt aus:

%Vor%

Ich habe viele verschiedene Wege ausprobiert. So sehen meine Konfigurationsdateien jetzt aus:

/var/lib/pgsql/9.2/data/postgresql.conf:

%Vor%

/var/lib/pgsql/9.2/data/pg_hba.conf:

%Vor%

Ich habe versucht, die obige Adresse auf 0.0.0.0/0 zu setzen, aber ID hat nicht funktioniert.

Und jedes Mal, wenn ich eine Änderung vorgenommen habe, habe ich das Programm neu gestartet.

%Vor%

In der Sicherheitsgruppe dieser EC2-Instanz kann ich diese Regel bereits sehen:

%Vor%

Der Befehl netstat zeigt an, dass der Port bereits geöffnet ist:

%Vor%

Um BMA's Frage zu beantworten:

Wenn ich den Befehl nmap lokal auf dem Server starte, scheint es so zu sein, dass er durch internen DNS zu einem anderen Host geht, auf dem 5432 geöffnet ist:

%Vor%

Und der Befehl iptables gibt folgende Ausgabe

%Vor%

[Bearbeitet nach dem Hinzufügen nach dem Vorschlag von bma]

iptables sieht nach dem neuen Zusatz so aus:

%Vor%

Aber ich kann immer noch nicht verbinden (gleicher Fehler). Was könnte das fehlende Stück hier sein?

    
saladinxu 21.07.2013, 08:10
quelle

3 Antworten

4

Ich habe die Lösung für dieses Problem gefunden. Zwei Dinge sind erforderlich.

  1. Verwenden Sie einen Texteditor, um pg_hba.conf zu ändern. Suchen Sie die Zeile Host alle 127.0.0.1/0 md5. Direkt darunter fügen Sie diese neue Zeile hinzu: host all all 0.0.0.0/0 md5

  2. Bearbeiten der PostgreSQL postgresql.conf-Datei:

    Verwenden Sie einen Texteditor, um postgresql.conf zu ändern. Suchen Sie die Zeile, die mit #listen_addresses = 'localhost' beginnt. Entfernen Sie die Kommentarzeichen für die Zeile, indem Sie # löschen, und ändern Sie localhost in . Die Zeile sollte jetzt so aussehen: listen_addresses = '' # welche IP-Adresse (n) zu hören ist;.

Starten Sie jetzt einfach Ihren postgres-Dienst und es wird eine Verbindung hergestellt

    
javacreed 05.09.2015 12:41
quelle
2

Haben Sie eine Firewall, die den Port 5432 blockiert? Eine schnelle nmap zeigt, dass es gefiltert wird.

%Vor%

Was zeigen die iptables auf Ihrem EC2 für Port 5432?

%Vor%

[nachdem OP weitere Details hinzugefügt hat]

Netstat zeigt, dass es zuhört, aber die Firewall-Ausgabe sieht nicht so aus, als wäre der 5432-Port offen (ich gestehe, dass ich nicht viel von einem Netzwerk-Typ bin). In Bezug auf einige meiner Notizen aus früheren Installationen müssen Sie möglicherweise den EC2-Port 5432 zu Ihrer IP-Adresse öffnen.

Um den Zugriff der Firewall zu ermöglichen, ersetzen Sie IHR-REMOTE-IP durch die IP-Adresse, von der Sie eine Verbindung herstellen:

%Vor%

- ausgehender Zugriff

%Vor%

Was zeigt iptables -nvL danach? Können Sie eine Verbindung herstellen?

    
bma 21.07.2013 18:08
quelle
0

Sieht aus, dass Ihre pg_hba.conf das "+" hinter dem Gruppennamen verfehlt. probiere

aus

# TYPE DATABASE USER ADDRESS METHOD host all pgadmin+ 0.0.0.0/24 trust host all all [my ip]/24 md5

Die pg_hba.conf erläutert den Benutzer:

  

Der Wert all gibt an, dass es mit allen Benutzern übereinstimmt. Andernfalls ist dies entweder der Name eines bestimmten Datenbankbenutzers oder ein Gruppenname, dem + vorangestellt ist. (Denken Sie daran, dass es in PostgreSQL keine wirkliche Unterscheidung zwischen Benutzern und Gruppen gibt. Ein + Zeichen bedeutet "Übereinstimmung mit einer der Rollen, die direkt oder indirekt Mitglieder dieser Rolle sind", während ein Name ohne + -Zeichen nur dieser bestimmten Rolle entspricht. )

    
CloudStax 31.08.2017 00:13
quelle

Tags und Links