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.