GNU/Linux >> Tutoriels Linux >  >> Linux

Comment accéder à Postgres lorsque j'obtiens une erreur à propos de /var/run/postgresql/.s.PGSQL.5432 ?

Si votre service Postgres est opérationnel sans aucune erreur ou s'il n'y a pas d'erreur lors du démarrage du service Postgres et que vous obtenez toujours l'erreur mentionnée, suivez ces étapes

Étape 1 :Exécuter pg_lsclusters listera tous les clusters postgres en cours d'exécution sur votre appareil

ex :

Ver Cluster Port Status Owner    Data directory               Log file
9.6 main    5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log

très probablement, le statut sera en panne dans votre cas. Essayez de redémarrer les clusters et le service Postgres

Étape 2 :Redémarrez le pg_ctlcluster

#format is pg_ctlcluster <version> <cluster> <action>
sudo pg_ctlcluster 9.6 main start

#restart postgresql service
sudo service postgresql restart

Étape 3 :Échec de l'étape 2 et génération d'une erreur

Si ce processus ne réussit pas, il lancera l'erreur. Mon erreur était (vous pouvez voir le journal des erreurs sur /var/log/postgresql/postgresql-9.6-main.log )

FATAL: could not access private key file "/etc/ssl/private/ssl-cert-snakeoil.key": Permission denied
Try adding `postgres` user to the group `ssl-cert`

Étape 4 :vérifier la propriété de postgres

Assurez-vous que postgres est le propriétaire de /var/lib/postgresql/version_no/main ex :sudo chown postgres -R /var/lib/postgresql/9.6/main/

Étape 5 :Vérifier que l'utilisateur Postgres appartient au groupe d'utilisateurs ssl-cert

Cela m'est arrivé et il s'est avéré que j'ai supprimé par erreur l'utilisateur Postgres du groupe "ssl-cert". Exécutez le code ci-dessous pour résoudre le problème du groupe d'utilisateurs et corriger les autorisations

#set user to group back with
sudo gpasswd -a postgres ssl-cert

# Fixed ownership and mode
sudo chown root:ssl-cert  /etc/ssl/private/ssl-cert-snakeoil.key
sudo chmod 740 /etc/ssl/private/ssl-cert-snakeoil.key

sudo service postgresql restart

Vous avez probablement plusieurs versions de PostgreSQL installées. Si c'est le cas, l'autre version est probablement par défaut unix_socket_directories = '/tmp/' mais le libpq votre psql est lié à probablement par défaut /var/run/postgresql/ .

Essayez

psql -h /tmp

Si cela fonctionne, ce qui précède est le problème. Vous pouvez ajouter export PGHOST=/tmp à votre .bashrc pour modifier la valeur par défaut localement pour votre utilisateur.

Si ce n'est pas fonctionne, assurez-vous que PostgreSQL est en cours d'exécution

ps aux |grep postgres

et sinon, démarrez-le. Cela dépend de la façon dont vous l'avez installé, mais ce sera via le service ou systemctl commande(s) si vous avez installé à l'aide de packages.


psql :impossible de se connecter au serveur :aucun fichier ou répertoire de ce type. Le serveur s'exécute-t-il localement et accepte-t-il les connexions sur le socket de domaine Unix ?

Cette erreur signifie généralement que le serveur n'est pas en cours d'exécution. Basé sur dpkg -l sortie et le fil des commentaires, c'était dû au postgresql-9.5 package principal étant en quelque sorte désinstallé. Puisque la désinstallation n'a pas été appelée avec le --purge option à dpkg , les fichiers de données et de configuration sont toujours là, donc apt-get install postgresql-9.5 peut résoudre le problème.


Linux
  1. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  2. Différence entre /var/log/messages, /var/log/syslog et /var/log/kern.log ?

  3. Comment systemd-tmpfiles nettoie /tmp/ ou /var/tmp (remplacement de tmpwatch) dans CentOS / RHEL 7

  4. Comment déplacer /usr et /var vers une autre partition ou un autre disque

  5. Comment obtenir le chemin d'un processus sous Unix / Linux

CentOS / RHEL :Comment faire pivoter les fichiers /var/log/wtmp et /var/log/btmp à l'aide de logrotate

Django static_root dans /var/www/... - aucune autorisation pour collectstatic

Quand dois-je utiliser /dev/shm/ et quand dois-je utiliser /tmp/?

unix:///var/run/supervisor.sock aucun fichier de ce type

Pourquoi les répertoires /home, /usr, /var, etc. ont-ils tous le même numéro d'inode (2) ?

Comment changer /tmp par défaut en /home/user/tmp