Psql n'a pas pu se connecter au serveur: aucun fichier ou répertoire de ce type, erreur 5432?


114

J'essaye de courir psqlsur ma machine Vagrant, mais j'obtiens cette erreur:

psql: could not connect to server: No such file or directory

Is the server running locally and accepting connections on 
Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

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

Commandes EDIT 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

1
C'est la réponse qui a fonctionné pour moi: askubuntu.com/a/824325/733901
Bruno Louvem Azeredo

Réponses:


157

J'ai eu ce 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 postgresql que j'utilise.

L'erreur elle-même est liée à une mauvaise configuration de postgresql, qui provoque le plantage du serveur avant son démarrage.

Je suggérerais de suivre ces instructions:

  1. Certifier que le service postgresql est en cours d'exécution, en utilisant sudo service postgresql start
  2. Exécutez pg_lsclustersdepuis votre terminal
  3. Vérifiez quel est le cluster que vous exécutez, la sortie devrait être quelque chose comme:

    Version - Répertoire des données du propriétaire du statut du port du cluster

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

    Ne tenez pas compte des signes «---», car ils ne sont utilisés que pour l'alignement. Les informations importantes sont la version et le cluster. Vous pouvez également vérifier si le serveur est en cours d'exécution ou non dans la colonne d'état.

  4. Copiez les informations de la version et du cluster, et utilisez comme ceci:, pg_ctlcluster <version> <cluster> startdonc dans mon cas, en utilisant la version 9.6 et le cluster 'main', ce seraitpg_ctlcluster 9.6 main start
  5. Si quelque chose ne va pas, alors postgresql générera un journal auquel on pourra accéder /var/log/postgresql/postgresql-<version>-main.log, donc dans mon cas, la commande complète serait sudo nano /var/log/postgresql/postgresql-9.6-main.log.
  6. La sortie doit 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 sudo service postgresql restartet cela devrait bien se passer.

J'ai beaucoup cherché pour trouver ceci, le mérite en revient à cet article .

Bonne chance!


1
Excellent guide. Plein d'explications complètes!
Salathiel Genèse

37

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

Comment je l'ai réparé (mac)

  • Essayez de démarrer postgresql avec pg_ctl -D /usr/local/var/postgres start
  • Recherchez le message d'erreur qui dit 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 depuis la première étape jusqu'à ce que vous ayez créé tous les répertoires manquants
  • Une fois terminé, puis en essayant de redémarrer postgresql, cela pourrait direFATAL: lock file "postmaster.pid" already exists
  • Supprimer postmaster.pid :rm /usr/local/var/postgres/postmaster.pid
  • Commencez postgres avec: pg_ctl -D /usr/local/var/postgres start
  • Terminé ✨

13

Je publie juste ceci pour tous ceux qui se sentent perdus et désespérés, comme je l'ai fait quand j'ai trouvé cette question. Il semble que parfois en éditant certains fichiers de configuration liés à psotgresql, on puisse accidentellement changer les permissions du fichier:

entrez la description de l'image ici

Notez comment pg_hba.conf appartient à root, et les utilisateurs ne peuvent même pas le lire. Cela fait que postgres ne peut pas ouvrir ce fichier et ne peut donc pas démarrer le serveur, ce qui renvoie l'erreur vue dans la question d'origine.

En exécutant

sudo chmod +r pg_hba.conf

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

sudo service postgresql start

A pu remettre le serveur en marche.


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

Pas exactement ce qui m'est arrivé, mais pour une raison quelconque, le SERVICE RÉSEAU 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.
Brad Mathews

5

Le /etc/postgresql/9.6/main/postgresql.confmontre- t -il que le port est attribué? Sur mon installation par défaut de Xubuntu Linux, le mien a montré port = 5433 pour une raison quelconque, du mieux que je me souvienne, mais j'ai commenté la ligne dans ce même fichier qui disait listen_addresses = 'localhost'et décommentait la ligne listen_addresses = '*'. Alors peut-être commencer et vérifier là-bas. J'espère que cela pourra aider.


4

Utilisez la commande:

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

9
Cela ne supprime-t-il pas toute la base de données? Je pense qu'un mot d'avertissement serait de mise.
d33tah

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

4

Cela fonctionne pour moi:

pg_ctl -D /usr/local/var/postgresql@9.6 stop;
brew services stop postgresql@9.6;
brew services start postgresql@9.6;

4

Ces deux étapes l'ont résolu pour moi sur Mac:

rm /usr/local/var/postgres/postmaster.pid
brew services restart postgresql

ÉDITER:

Si vous rencontrez ce problème (signalé par @ luckyguy73): psql: FATAL: database "postgresql" does not exist

Tu peux courir

brew postgresql-upgrade-database

réparer.


merci mec, je suis passé d'un impossible à me connecter à un fatal en suivant vos instructions: "psql: FATAL: la base de données" postgresql "n'existe pas"
luckyguy73

Huh bizarre, ça marche toujours pour moi. Avez-vous réussi à le résoudre?
nicodp

pas de soucis, ça s'est avéré ok. Je viens de lancer 'brew postgresql-upgrade-database' et cela a fait l'affaire, merci
luckyguy73

1
Heureux que vous l'ayez réparé! Si cela ne vous dérange pas, j'ajouterai cela à la réponse aussi, au cas où quelqu'un d'autre serait confronté au même problème. Merci
nicodp le

3

Dans zsh:

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

C'est la seule chose qui a fonctionné pour moi après d'innombrables heures de dépannage.


Je viens de supprimer toutes mes bases de données locales ... merci
AlxVallejo

2

Ouvrez votre gestionnaire de base de données et exécutez ce script

update pg_database set datallowconn = 'true' where datname = 'your_database_name';

2

La même chose m'est arrivée car j'avais changé quelque chose dans le /etc/hostsfichier. Après l'avoir changé, cela 127.0.0.1 localhosta fonctionné pour moi.


2

il suffit de réinstaller votre pgsql avec la version directe sudo apt-get install postgresql-9.5 (vous devez supprimer le paquet avant d'en installer un nouveau)


2

J'ai pu résoudre le problème en exécutant:

sudo systemctl start postgresql@9.5-main

sudo systemctl start postgresql@12-maintravaillé pour moi
parsecer

2

Dans mon cas, c'est le fichier de verrouillage postmaster.idqui n'a pas été supprimé correctement lors du dernier crash système qui a causé le problème. Le supprimer sudo rm /usr/local/var/postgres/postmaster.pidet redémarrer Postgres a résolu le problème.


1

J'ai eu la même erreur lorsque je crée la base de données SQL dans une machine virtuelle. J'avais changé la valeur par défaut de /etc/postgresql/9.3/main/postgresql.conf shared_buffers = 200MBà 75% de ma RAM totale. Eh bien, j'ai oublié d'allouer réellement cette RAM dans la VM. Lorsque j'ai donné la commande de créer une nouvelle base de données, j'ai reçu la même erreur.

Éteint, a donné au bébé son biberon (RAM) et hop, ça a marché.


1

J'ai eu cette erreur lorsque j'ai restauré ma base de données à partir du dernier fichier de sauvegarde pg_basebackup. Après cela, lorsque j'ai essayé de connecter la base de données (psql), j'obtenais la même erreur. L'erreur a été résolue, quand j'ai mis à jour le fichier pg_hba.conf et partout où l'authentification "peer" était là, je l'ai remplacée par "md5", puis j'ai redémarré les services postgres. Après cela, le problème a été résolu.


1

J'ai eu des problèmes similaires tout à l'heure. Après avoir essayé plus de 5 suggestions, j'ai décidé de revenir à l'essentiel et de recommencer depuis le début. Ce qui signifiait supprimer mon installation postgresql et suivre ce guide lors de la réinstallation de postgresql. https://help.ubuntu.com/lts/serverguide/postgresql.html


1

Cette erreur m'est arrivée après que mon mac mini se soit débranché (donc arrêt forcé), et tout ce que j'avais à faire pour la réparer était de redémarrer


1

Je vous recommande de clarifier le port qui postgres. Dans mon cas, je ne savais pas sur quel port postgres fonctionnait.

lsof -i | grep 'post'

alors vous pouvez savoir quel port écoute.

psql -U postgres -p "port_in_use"

avec l'option de port, pourrait être la réponse. vous pouvez utiliser psql.


1

J'ai parfois le même problème mais surtout après les mises à niveau de macOS. L'arrêt et la migration vers la nouvelle version le corrigent généralement pour moi (apportez des modifications en fonction de votre version). Alors mettez d'abord à jour votre postgresql

brew services stop postgresql@12
brew services start postgresql@12
brew postgresql-upgrade-database

Il s'agit principalement d'une solution temporaire, mais comme je n'ai pas pu trouver de meilleure solution, cela fonctionne pour moi.


brew postgresql-upgrade-database est ce qui a finalement fonctionné pour moi après avoir tout essayé
luckyguy73

1

Si aucune des réponses ci-dessus ne fonctionne pour vous, veuillez essayer celle-ci,

De nombreuses personnes ont évoqué de nombreuses solutions à ce problème! Mais tous ont oublié que, le même problème se posera lorsque votre disque n'a pas assez d'espace ou que l'espace qui vous est attribué postgresest plein

Vérifiez le stockage de votre système, s'il est plein de libérer de l'espace! puis redémarrez votre postgres par sudo service postgresql restartou faites un arrêt et commencez sudo service posgresql stopensuitesudo service postgresql start

Cela résoudra le problème, cela a été résolu pour moi


0

J'ai le même problème avec postgres 11 sur mon mac. J'obtiens cette erreur à chaque fois après le redémarrage

psql: could not connect to server: No such file or directory

Is the server running locally and accepting connections on 
Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Comme solution temporaire, je fais

brew services stop postgresql@11
brew services start postgresql@11
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.