/etc/services
est uniquement indicatif, c'est une liste de ports bien connus. Cela ne signifie pas que quoi que ce soit est réellement en cours d'exécution 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. 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 s'exécute réellement à l'aide de l' 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 d'EnterpriseDB, etc.
Ce qui finit par arriver, c'est que l'utilisateur installe Pg et démarre un serveur à partir d'un emballage, mais utilise le client psql
et à libpq
partir d'un emballage différent. Cela se produit généralement lorsqu'ils exécutent Postgres.app ou homebrew Pg et se connectent à psql
celui livré avec le système d'exploitation. Non seulement ceux-ci ont parfois des ports par défaut différents, mais le Pg livré avec Mac OS X a un chemin de socket unix par défaut différent , donc 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 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 le 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
afin que le psql
et libpq
associé au PostgreSQL que vous exécutez réellement soit ce qui se trouve en premier sur le PATH
. Les détails de cela 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.
PGPORT
est définie: postgresql.org/docs/current/static/libpq-envars.html