PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

port postgresql confusion 5433 ou 5432?

/etc/services est seulement consultatif, c'est une liste de ports bien connus. Cela ne signifie pas que quoi que ce soit s'exécute réellement sur ce port ou que le service nommé s'exécutera sur ce port.

Dans le cas de PostgreSQL, il est courant d'utiliser le port 5432 s'il est disponible. Si ce n'est pas le cas, la plupart des installateurs choisiront le prochain port libre, généralement 5433.

Vous pouvez voir ce qui est réellement en cours d'exécution en utilisant le netstat outil (disponible sur OS X, Windows et Linux, avec une syntaxe de ligne de commande variant entre les trois).

Ceci est encore compliqué sur les systèmes Mac OS X par l'horrible désordre des différents packages PostgreSQL - l'ancienne version d'Apple de PostgreSQL intégrée au système d'exploitation, Postgres.app, Homebrew, Macports, le programme d'installation EnterpriseDB, etc.

Ce qui finit par se produire, c'est que l'utilisateur installe Pg et démarre un serveur à partir d'un package, mais utilise le psql et libpq client d'un emballage différent. Cela se produit généralement lorsqu'ils exécutent Postgres.app ou homebrew Pg et se connectent avec le psql livré avec le système d'exploitation. Non seulement ceux-ci ont parfois des ports par défaut différents, mais le Pg fourni avec Mac OS X a un chemin de socket unix par défaut différent , donc même si le serveur s'exécute sur le même port, il n'écoutera pas le même socket Unix.

La plupart des utilisateurs de Mac contournent ce problème en utilisant simplement tcp/ip avec psql -h localhost . Vous pouvez également spécifier un port si nécessaire, par exemple psql -h localhost -p 5433 . Vous pouvez avoir plusieurs instances PostgreSQL en cours d'exécution, alors assurez-vous de vous connecter à la bonne en utilisant select version() et SHOW data_directory; .

Vous pouvez également spécifier un répertoire de socket unix ; vérifiez les unix_socket_directories paramètre de l'instance PostgreSQL à laquelle vous souhaitez vous connecter et spécifiez-le avec psql -h , par exemple psql -h /tmp .

Une solution plus propre consiste à corriger votre système PATH pour que le psql et libpq associé au PostgreSQL que vous exécutez réellement est ce qui se trouve en premier sur le PATH . Les détails dépendent de votre version de Mac OS X et des packages Pg que vous avez installés. Je n'utilise pas Mac et je ne peux pas offrir beaucoup plus de détails de ce côté sans passer plus de temps que ce qui est actuellement disponible.