HOWTO · PostgreSQL
PostgreSQL-Standardport
Dieser Artikel beseitigt alle Verwirrungen, die Benutzer möglicherweise haben, während sie den richtigen PostgreSQL-Standardport herausfinden, und hilft ihnen, durch Fehler zu navigieren, die möglicherweise auftreten.
Auf dieser Seite
Der Standardport von PostgreSQL ist 5432. Dies ist der Standardwert für Clients und Serverkonfigurationen von PostgreSQL. Er beweist jedoch nicht, dass auf Ihrem Computer ein Server läuft, auf diesem Port Verbindungen annimmt oder von Ihrem Client aus erreichbar ist. Ein Paket, ein Administrator oder eine Bereitstellung kann einen anderen Port festlegen.
Was ist der Standardport von PostgreSQL?
Port 5432 ist der übliche Standard für Verbindungen von PostgreSQL über TCP/IP. Ein Client benötigt den Host und Port des Servers sowie gültige Zugangsdaten für Datenbank und Rolle. localhost bezeichnet denselben Computer, auf dem der Client läuft. Verwenden Sie diesen Hostnamen also nur, wenn der Server lokal ausgeführt wird. Datenbankname, Rolle, Passwort und Host sind von der jeweiligen Installation abhängig; es gibt kein universelles Testkonto.
Ein Port bezeichnet einen Netzwerkendpunkt auf einem Host. Er unterscheidet sich von einem Unix-Domain-Socket, der über einen lokalen Dateisystempfad statt über ein TCP-Host-Port-Paar verbindet. Über diese beiden Verbindungsmethoden können unterschiedliche PostgreSQL-Instanzen erreichbar sein, selbst wenn beide auf demselben Computer verwendet werden.
Prüfen, welche PostgreSQL-Instanz Verbindungen annimmt
Verbinden Sie sich mit der Instanz, die Sie überprüfen möchten, und fragen Sie deren Identität und Einstellungen ab. Führen Sie in einer Sitzung mit psql die Befehle SELECT version();, SHOW data_directory;, SHOW config_file; und SHOW port; aus. Die Ergebnisse zeigen die Serverversion, das Datenverzeichnis, die verwendete Konfigurationsdatei und den konfigurierten Port. Diese vom Server gemeldeten Werte helfen dabei, mehrere installierte oder laufende Instanzen voneinander zu unterscheiden.
Clientprogramm und Server sind getrennte Komponenten: Dass sich eine ausführbare Datei von psql in Ihrem PATH befindet, sagt nicht aus, welchen Server sie erreicht. Wenn ein Befehl eine unerwartete Instanz erreicht, prüfen Sie, welche ausführbare Datei von psql Ihre Shell auswählt, und geben Sie den gewünschten Host und Port ausdrücklich an. Auf Unix-ähnlichen Systemen kann das Weglassen von -h eine lokale Socket-Verbindung auswählen; -h localhost fordert eine TCP-Verbindung an. Das Socket-Verzeichnis wird durch die Einstellung unix_socket_directories des ausgewählten Servers bestimmt.
Mit PostgreSQL eine Verbindung über einen bestimmten Port herstellen
Verwenden Sie für einen lokalen Server psql -h localhost -p 5432 -U your_role -d your_database. Ersetzen Sie die Platzhalter für Rolle und Datenbank durch die für Ihre Instanz konfigurierten Werte. Um einen anderen konfigurierten Port wie 5433 auszuprobieren, ändern Sie den Wert hinter -p. Das Beispiel bedeutet nicht, dass dort ein weiterer Server verfügbar ist. Ersetzen Sie bei einem entfernten Server localhost durch dessen Hostnamen oder Adresse und stellen Sie sicher, dass der Server Verbindungen von Ihrem Client annimmt.
Das folgende Python-Beispiel setzt einen Clientbefehl für einen lokalen Server mit seinem Standardport zusammen. Es gibt den Befehl aus, startet aber weder psql noch verbindet es sich mit einer Datenbank. Führen Sie den angezeigten Befehl in einer Shell aus, nachdem Sie geprüft haben, dass der Client installiert ist und die Verbindungsdaten zu Ihrem Server passen.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
import shlex
host = "localhost"
port = 5432
database = "my_database"
role = "my_role"
command = ["psql", "-h", host, "-p", str(port), "-U", role, "-d", database]
print(shlex.join(command))
Den Listening-Port von PostgreSQL ändern
Verbinden Sie sich zuerst mit der gewünschten Instanz und führen Sie SHOW config_file; aus, um die tatsächlich verwendete Konfigurationsdatei zu ermitteln. Suchen Sie darin nach der Einstellung port. Die Pfade hängen vom jeweiligen Paket ab; leiten Sie den Pfad daher nicht allein vom Betriebssystem ab. Legen Sie den gewünschten Port fest und starten Sie anschließend diese Instanz von PostgreSQL neu, damit die Änderung des Listening-Ports wirksam wird. Informationen zum Neustart finden Sie in der Dokumentation des Dienstmanagers oder der Bereitstellung.
Verbinden Sie sich nach dem Neustart mit psql über den neuen Port und führen Sie SHOW port; aus, um den vom Server konfigurierten Wert zu bestätigen. Wenn ein anderer Prozess den gewünschten Port bereits belegt, kann PostgreSQL möglicherweise nicht daran binden und keine Verbindungen annehmen. Wählen Sie einen freien Port oder beheben Sie den Konflikt und prüfen Sie die Startprotokolle des Servers auf die konkrete Fehlermeldung. Gehen Sie nicht davon aus, dass ein Installationsprogramm automatisch einen Ersatzport auswählt.
Probleme mit Ports und Verbindungen von PostgreSQL beheben
Wenn eine Verbindung fehlschlägt oder den falschen Server erreicht, prüfen Sie der Reihe nach:
- Host und Port: Vergewissern Sie sich, dass der Client den gewünschten Host und den für diesen Server konfigurierten Port verwendet. Port 5432 ist lediglich der Standard; bei einer Bereitstellung kann ein anderer Wert gelten.
- Identität der Instanz: Wenn die Verbindung funktioniert, aber unerwartete Daten zeigt, führen Sie in dieser Sitzung
SELECT version();,SHOW data_directory;undSHOW port;aus. Vergleichen Sie die Ergebnisse mit der gewünschten Instanz. - Verbindungsmethode: Prüfen Sie, ob der Client TCP/IP oder einen lokalen Socket verwendet. Mit
-h localhostfordern Sie TCP auf dem lokalen Computer an. Bei einer Socket-Verbindung prüfen Sie das Socket-Verzeichnis der ausgewählten Instanz. - Listening- und Zugriffseinstellungen: Prüfen Sie, ob der Server läuft, den ausgewählten Port verwenden kann und Verbindungen über die gewünschte Netzwerkschnittstelle annimmt. Bei Fernzugriff sind außerdem die Zugriffsregeln des Servers und die Netzwerkkontrollen relevant.
- Client- und Serverdetails: Vergewissern Sie sich, dass der ausgewählte Client
psqlder gewünschte ist, und geben Sie die für die Instanz konfigurierten Datenbank-, Rollen- und Authentifizierungsangaben an.
Betriebssystemspezifische Befehle zum Ermitteln eines Prozesses, der einen Port belegt, unterscheiden sich. Verwenden Sie deshalb das für Ihre Plattform dokumentierte Werkzeug zur Prüfung lauschender Prozesse. Damit lässt sich ein Prozess identifizieren; mit den SQL-Abfragen oben können Sie zusätzlich bestätigen, welche Instanz von PostgreSQL die Verbindung angenommen hat.