202 votes

Psql n'a pas pu se connecter au serveur : Aucun fichier ou dossier de ce type, erreur 5432?

Je essaie d'exécuter psql sur ma machine Vagrant, mais je reçois cette erreur :

psql: impossible de se connecter au serveur : Aucun fichier ou dossier de ce type

Le serveur tourne-t-il localement et accepte-t-il les connexions sur 
le socket de domaine Unix "/var/run/postgresql/.s.PGSQL.5432" ?

Note : Vagrant 1.9.2 Boîte : ubuntu/trusty64, https://atlas.hashicorp.com/ubuntu/boxes/trusty64

EDIT Commandes que j'ai utilisées pour installer et exécuter postgres :

  • sudo apt-get update
  • sudo apt-get install postgresql
  • sudo su postgres
  • psql -d postgres -U postgres

2 votes

Voici la réponse qui a fonctionné pour moi : askubuntu.com/a/824325/733901

254voto

malvadao Points 845

J'ai eu le même problème, lié à la configuration de mon fichier pg_hba.conf ( situé dans /etc/postgresql/9.6/main). Veuillez noter que 9.6 est la version de postgresql que j'utilise.

L'erreur elle-même est liée à une mauvaise configuration de postgresql, qui fait planter le serveur avant même qu'il démarre.

Je vous suggère de suivre ces instructions :

  1. Vérifiez que le service postgresql est en cours d'exécution en utilisant sudo service postgresql start

  2. Exécutez pg_lsclusters depuis votre terminal

  3. Vérifiez quel cluster vous utilisez, la sortie devrait ressembler à :

    Version - Cluster Port Status Owner Répertoire de données

    9.6 ------- main -- 5432 en ligne postgres /var/lib/postgresql/9.6/main

    Ignorez les signes '---', ils sont là uniquement pour l'alignement. Les informations importantes sont la version et le cluster. Vous pouvez également vérifier si le serveur est en marche ou non dans la colonne d'état.

  4. Copiez les informations de la version et du cluster, et utilisez les comme suit : pg_ctlcluster start, donc dans mon cas, en utilisant la version 9.6 et le cluster 'main', ce serait pg_ctlcluster 9.6 main start

  5. Si quelque chose ne va pas, postgresql générera un journal, qui peut être consulté dans /var/log/postgresql/postgresql--main.log, donc dans mon cas, la commande complète serait sudo nano /var/log/postgresql/postgresql-9.6-main.log.

  6. La sortie devrait montrer quelle est l'erreur.

    2017-07-13 16:53:04 BRT [32176-1] LOG: méthode d'authentification invalide "all"
    2017-07-13 16:53:04 BRT [32176-2] CONTEXTE: ligne 90 du fichier de configuration "/etc/postgresql/9.5/main/pg_hba.conf"
    2017-07-13 16:53:04 BRT [32176-3] FATAL: impossible de charger pg_hba.conf

  7. Corrigez les erreurs et redémarrez le service postgresql avec sudo service postgresql restart et tout devrait rentrer dans l'ordre.

J'ai beaucoup cherché pour trouver cela, le crédit revient à ce post.

Bonne chance !

5 votes

Excellent guide. Full of comprehensive explanations ! => Excellent guide . Plein d'explications complètes !

5 votes

Pour l'étape 4, j'ai dû faire sudo systemctl start postgresql@9.5-main au lieu de pg_ctlcluster 9.5 main start. Merci pour votre explication géniale !

1 votes

Sur le mien, je ne peux pas exécuter ceci: "pg_ctlcluster 10 main start" à la place ceci fonctionne pour moi: "/usr/lib/postgresql/10/bin/pg_ctl restart -D /var/lib/postgresql/10/main" bien sûr vous devez indiquer votre propre version de postgres et chemin. J'ai oublié où j'ai trouvé cette solution, mais c'est dans l'historique de mon terminal. Peut-être que quelqu'un en aura besoin. merci pour cette réponse, cela m'a dirigé dans la bonne direction.

61voto

martinlasek Points 157

J'ai eu le même problème mais aucune des réponses ici n'a aidé.

Comment j'ai résolu le problème (mac)

  • Essayez de démarrer postgresql avec pg_ctl -D /usr/local/var/postgres start
  • Recherchez le message d'erreur qui indique quelque chose comme FATAL: could not open directory "pg_tblspc": No such file or directory.
  • Créez ce répertoire manquant mkdir /usr/local/var/postgres/pg_tblspc
  • Répétez à partir de l'étape un jusqu'à ce que vous ayez créé tous les répertoires manquants
  • Une fois terminé et en essayant de démarrer à nouveau postgresql, il pourrait indiquer FATAL: lock file "postmaster.pid" already exists
  • Supprimez postmaster.pid: rm /usr/local/var/postgres/postmaster.pid
  • Démarrez postgres avec : pg_ctl -D /usr/local/var/postgres start
  • Terminé

0 votes

Travaillé. MERCI.

23voto

wfgeo Points 392

Je poste simplement ceci pour toute personne se sentant perdue et désespérée comme je l'étais lorsque j'ai trouvé cette question. Il semble que parfois en modifiant certains fichiers de configuration liés à PostgreSQL, on peut accidentellement changer les permissions du fichier :

entrer la description de l'image ici

Remarquez comment pg_hba.conf appartient à root, et les utilisateurs ne peuvent même pas le lire. Cela cause un problème pour que PostgreSQL puisse ouvrir ce fichier et donc ne pas pouvoir démarrer le serveur, affichant l'erreur vue dans la question originale.

En exécutant

sudo chmod +r pg_hba.conf

J'ai pu rendre ce fichier à nouveau accessible à l'utilisateur postgres et ensuite après avoir exécuté

sudo service postgresql start

J'ai pu redémarrer le serveur.

0 votes

Oui, c'était mon problème, et cela n'a pas été signalé dans les journaux (ou si c'était le cas, je n'ai pas compris).

0 votes

Pas exactement ce qui m'est arrivé, mais pour une raison quelconque, NETWORK SERVICE a perdu les privilèges d'écriture sur toute la structure de répertoires. Cette réponse m'a orienté dans la bonne direction d'où le vote positif.

8voto

Gaurav Verma Points 51

ATTENTION : Cela va supprimer la base de données

Utilisez la commande :

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

14 votes

Ne supprime-t-il pas l'intégralité de la base de données ? Je pense qu'il serait approprié de donner un avertissement.

1 votes

Merci @Tucker Watts et @Gaurav Verma. J'ai résolu mon problème en essayant les deux solutions et en ajoutant cette commande pg_ctl -D /usr/local/var/postgres -l logfile start.

6voto

J2112O Points 331

Est-ce que le /etc/postgresql/9.6/main/postgresql.conf montre que le port est attribué? Sur mon installation par défaut de Xubuntu Linux, le mien montrait le port = 5433 pour une raison quelconque autant que je puisse me souvenir, mais j'ai commenté la ligne dans ce même fichier qui disait listen_addresses = 'localhost' et décommenté la ligne listen_addresses = '*'. Donc peut-être commencer et vérifier là. J'espère que cela aide.

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