/etc/services
est seulement consultatif, c'est une liste de ports connus. Cela ne signifie pas que quelque chose fonctionne réellement sur ce port ou que le service nommé fonctionnera sur ce port.
Dans le cas de PostgreSQL, il est courant d'utiliser le port 5432 s'il est disponible. S'il ne l'est pas, la plupart des installateurs choisiront le prochain port libre, généralement le 5433.
Vous pouvez voir ce qui est réellement en cours d'exécution en utilisant le netstat
(disponible sous OS X, Windows et Linux, la syntaxe de la ligne de commande variant dans les trois cas).
Cette situation est encore compliquée sur les systèmes Mac OS X par le désordre horrible des différents paquets PostgreSQL - l'ancienne version de PostgreSQL d'Apple intégrée au système d'exploitation, Postgres.app, Homebrew, Macports, le programme d'installation d'EnterpriseDB, etc. etc.
Ce qui se passe en fin de compte, c'est que l'utilisateur installe Pg et démarre un serveur à partir d'un emballage, mais utilise l'option psql
et libpq
client d'un emballage différent. Typiquement, cela se produit lorsqu'ils exécutent Postgres.app ou homebrew Pg et se connectent avec l'option psql
qui sont livrés avec le système d'exploitation. Non seulement ces derniers ont parfois des ports par défaut différents, mais le Pg livré avec Mac OS X a un port par défaut différent. chemin par défaut du socket unix Ainsi, même si le serveur fonctionne 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 ex. psql -h localhost -p 5433
. Vous pouvez avoir plusieurs instances PostgreSQL en cours d'exécution, alors assurez-vous que vous vous connectez à la bonne en utilisant select version()
et SHOW data_directory;
.
Vous pouvez également spécifier un répertoire de socket unix ; vérifiez le fichier unix_socket_directories
de l'instance de PostgreSQL à laquelle vous souhaitez vous connecter et spécifiez-le avec la commande psql -h
par exemple psql -h /tmp
.
Une solution plus propre consiste à corriger votre système PATH
de sorte que le psql
et libpq
associé au PostgreSQL que vous exécutez actuellement est celui qui se trouve en premier sur la page d'accueil. PATH
. Les détails dépendent de la version de votre Mac OS X et des paquets Pg que vous avez installés. Je n'utilise pas Mac et je ne peux pas vous donner plus de détails à ce sujet sans y consacrer plus de temps que celui dont je dispose actuellement.
5 votes
Vérifiez si la variable d'environnement
PGPORT
est défini : postgresql.org/docs/current/static/libpq-envars.html