web-dev-qa-db-fra.com

postgresql confusion de port 5433 ou 5432?

J'ai installé postgresql sur OSX. Quand je lance psql, je reçois

$ psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5433"?

Cependant, à partir de/etc/services

postgresql      5432/udp    # PostgreSQL Database
postgresql      5432/tcp    # PostgreSQL Database
#                          Tom Lane <[email protected]>
pyrrho          5433/tcp    # Pyrrho DBMS
pyrrho          5433/udp    # Pyrrho DBMS

5433 est occupé par pyrrho, 5432 est attribué à pg. Je peux me connecter avec

psql -p 5432

mais pourquoi psql pense-t-il qu'il s'agit de 5433 et comment puis-je faire en sorte que psql soit au bon endroit par défaut?

102
highBandWidth

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

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

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

Ceci est encore plus compliqué sur les systèmes Mac OS X par le fouillis horrible de différents packages 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.

En fin de compte, l’utilisateur installe Pg et démarre un serveur à partir d’un package, mais utilise les clients psql et libpq à partir d’un package différent. Cela se produit généralement lorsqu'ils exécutent Postgres.app ou homebrew Pg et qu'ils se connectent à la psql fournie avec le système d'exploitation. Non seulement ces ports ont parfois des ports par défaut différents, mais la Pg fournie avec Mac OS X a un chemin de socket unix par défaut différent , de sorte que même si le serveur fonctionne sur le même port, il n'écoute pas même socket unix.

La plupart des utilisateurs de Mac contournent cela 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. Plusieurs instances de PostgreSQL peuvent être en cours d'exécution. Assurez-vous donc 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 paramètre unix_socket_directories 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 de sorte que les psql et libpq associés au système PostgreSQL que vous exécutez soient réellement ceux trouvés 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 donner beaucoup plus de détails de ce côté sans perdre plus de temps que ce qui est actuellement disponible.

148
Craig Ringer

Réponse rapide sur OSX, définissez vos variables d’environnement.

exporter PGHOST = localhost

exportation PGPORT = 5432

Ou tout ce dont vous avez besoin. 

20
DavidLStacy

Le port par défaut de Postgres est généralement configuré dans:

Sudo vi /<path to your installation>/data/postgresql.conf

Sur Ubuntu, cela pourrait être:

Sudo vi /<path to your installation>/main/postgresql.conf

Recherchez port dans ce fichier.

11
Risadinha

Cela semble être l’une des raisons les plus courantes, si vous installez une nouvelle version de PostgreSQL sans arrêter le service d’une installation existante. C'était aussi un casse-tête particulier pour moi. Avant d'installer ou de mettre à niveau, en particulier sous OS X, et d'utiliser le programme d'installation en un clic à partir de Enterprise DB, vérifiez l'état de l'ancienne installation avant de poursuivre.

7
Eron Lloyd

Grâce à @a_horse_with_no_name 's comment , j'ai changé ma définition PGPORT en 5432 dans pg_env.sh. Cela a résolu le problème pour moi. Je ne sais pas pourquoi postgres l'a initialement défini comme 5433 alors qu'il hébergeait le service à 5432.

5
highBandWidth

J'ai rencontré ce problème aussi, j'ai fini par avoir deux serveurs postgres fonctionnant en même temps. J'ai désinstallé l'un d'entre eux et changé le port à 5432 et fonctionne bien maintenant.

2
Krazzzeee

Pour moi dans PgAdmin 4 sur Mac OS High Sierra , En cliquant sur PostrgreSQL10 base de données sous Serveurs dans la colonne de gauche, puis sur Propriétés onglet, montrait 5433 en tant que port sous Connexion . (Je ne sais pas pourquoi, car j'ai choisi 5432 lors de l'installation). Quoi qu’il en soit, j’ai cliqué sur l’icône Éditer sous l’onglet Propriétés , puis l’a changé en 5432 , enregistré, ce qui a résolu le problème. Allez comprendre.

0
Alan Simpson