171 votes

confusion du port postgresql 5433 ou 5432 ?

J'ai installé postgresql sur OSX. Lorsque j'exécute psql, j'obtiens

$ 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 <tgl@sss.pgh.pa.us>
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 que c'est 5433 et comment faire pour que psql regarde au bon endroit par défaut ?

5 votes

Vérifiez si la variable d'environnement PGPORT est défini : postgresql.org/docs/current/static/libpq-envars.html

225voto

Craig Ringer Points 72371

/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.

30voto

DavidLStacy Points 11

Réponse rapide sous OSX, définissez vos variables d'environnement.

>export PGHOST=localhost

>export PGPORT=5432

Ou tout ce dont vous avez besoin.

24voto

Risadinha Points 1254

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

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

Sur Ubuntu, cela pourrait être :

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

Recherche de port dans ce dossier.

0 votes

Sous Mac OSX avec la distro BigSQL, c'est ici : ~/PostgreSQL/data/pg96

8voto

highBandWidth Points 3872

Merci à @a_horse_with_no_name 's commentaire J'ai changé ma définition de PGPORT en 5432 dans pg_env.sh. Cela a réglé le problème pour moi. Je ne sais pas pourquoi postgres l'a défini comme 5433 initialement alors qu'il hébergeait le service à 5432.

4voto

Krazzzeee Points 46

J'ai également rencontré ce problème, mais il s'est avéré que j'avais deux serveurs postgres fonctionnant en même temps. J'ai désinstallé l'un d'entre eux et remis le port à 5432 et tout fonctionne bien maintenant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X