PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgresql-Port-Verwirrung 5433 oder 5432?

/etc/services ist nur beratend, es ist eine Auflistung bekannter Ports. Das bedeutet nicht, dass tatsächlich irgendetwas auf diesem Port läuft oder dass der Named Service auf diesem Port läuft.

Im Fall von PostgreSQL ist es üblich, Port 5432 zu verwenden, sofern verfügbar. Ist dies nicht der Fall, wählen die meisten Installer den nächsten freien Port, normalerweise 5433.

Mit netstat können Sie sehen, was tatsächlich läuft Tool (verfügbar unter OS X, Windows und Linux, mit unterschiedlicher Befehlszeilensyntax für alle drei).

Dies wird auf Mac OS X-Systemen durch das schreckliche Durcheinander verschiedener PostgreSQL-Pakete weiter erschwert - Apples alte Version von PostgreSQL, die in das Betriebssystem integriert ist, Postgres.app, Homebrew, Macports, das EnterpriseDB-Installationsprogramm usw. usw.

Was am Ende passiert, ist, dass der Benutzer Pg installiert und einen Server aus einem Paket startet, aber den psql verwendet und libpq Client aus einer anderen Verpackung. Normalerweise tritt dies auf, wenn sie Postgres.app oder Homebrew Pg ausführen und sich mit psql verbinden die mit dem Betriebssystem ausgeliefert wurde. Diese haben nicht nur manchmal unterschiedliche Standardports, sondern das mit Mac OS X gelieferte Pg hat einen anderen Standard-Unix-Socket-Pfad , selbst wenn der Server also auf demselben Port läuft, wird er nicht denselben Unix-Socket abhören.

Die meisten Mac-Benutzer umgehen dies, indem sie einfach TCP/IP mit psql -h localhost verwenden . Sie können bei Bedarf auch einen Port angeben, zB psql -h localhost -p 5433 . Sie haben möglicherweise mehrere PostgreSQL-Instanzen ausgeführt, also stellen Sie sicher, dass Sie sich mit der richtigen verbinden, indem Sie select version() verwenden und SHOW data_directory; .

Sie können auch ein Unix-Socket-Verzeichnis angeben; Überprüfen Sie die unix_socket_directories Einstellung der PostgreSQL-Instanz, zu der Sie sich verbinden möchten, und geben Sie diese mit psql -h an , z. B. psql -h /tmp .

Eine sauberere Lösung besteht darin, Ihr System PATH zu korrigieren sodass die psql und libpq was mit dem PostgreSQL verbunden ist, das Sie tatsächlich ausführen, ist das, was zuerst auf dem PATH gefunden wird . Die Details dazu hängen von Ihrer Mac OS X-Version und den von Ihnen installierten Pg-Paketen ab. Ich verwende keinen Mac und kann auf dieser Seite nicht viel mehr Details anbieten, ohne mehr Zeit aufzuwenden, als derzeit verfügbar ist.