web-dev-qa-db-fra.com

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

J'utilise Ubuntu 16. J'ai installé Postgresql. Postgresql fonctionnait, mais j'ai redémarré.

les commandes nmap montrent que le port 5432 est ouvert. Postgres semble fonctionner correctement:

service postgresql status

postgresql.service - SGBDR PostgreSQL chargé: chargé (/lib/systemd/system/postgresql.service; activé; prédéfini par le vendeur: activé) Actif: actif (quitté) depuis le samedi 2017-07-29 18:42:59 EDT; Il y a 1min 4s Processus: 201 ExecStart =/bin/true (code = sorti, statut = 0/SUCCÈS) PID principal: 201 (code = sorti, statut = 0/SUCCÈS)
Mémoire: 0B CGroup: /system.slice/postgresql.service

J'ai exécuté ceci: psql

Mais j'ai compris ceci:

psql: impossible de se connecter au serveur: aucun fichier ou répertoire de ce type Le serveur fonctionne-t-il localement et accepte-t-il les connexions sur le socket de domaine Unix "/var/run/postgresql/.s.PGSQL.5432"?

Le fichier ci-dessus ne semble pas exister.

Comment accéder à Postgresql? Normalement, je lance psql ou Sudo -i -u postgres puis psql. Mais ces commandes ne fonctionnent pas. Je reçois toujours une erreur sur "impossible de se connecter au serveur". Plusieurs redémarrages n'ont pas aidé.

Mise à jour:

J'ai exécuté cette commande: dpkg -l | grep postgres

 rc postgresql-9.5 9.5.6-0ubuntu0.16.04 Base de données SQL relationnelle objet AMD64, serveur version 9.5 
 ii postgresql-client 9.5 + 173 tous les programmes frontaux pour PostgreSQL (version prise en charge) 
 ii postgresql-client-9.5 9.5.7-0ubuntu0.16.04 Programmes frontaux AMD64 pour PostgreSQL 9.5 
 ii postgresql-client-common 173 tous les gestionnaires pour plusieurs versions de client PostgreSQL 
 ii postgresql-common 173 tous les gestionnaires de cluster de bases de données PostgreSQL 
9
Victor

psql: impossible de se connecter au serveur: aucun fichier ou répertoire de ce type Le serveur fonctionne-t-il localement et accepte-t-il les connexions sur le socket de domaine Unix "/var/run/postgresql/.s.PGSQL.5432"?

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û à postgresql-9.5 le paquet principal est en quelque sorte désinstallé. Étant donné que la désinstallation n'a pas été appelée avec le --purge option pour 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.

5
Daniel Vérité

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

Essayer

psql -h /tmp

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

Si cela ne fonctionne pas fonctionne, assurez-vous que PostgreSQL est réellement en cours d'exécution

ps aux |grep postgres

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

9
Craig Ringer

Si votre service Postgres est opérationnel sans 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, procédez comme suit

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

par exemple:

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

le statut sera probablement en baisse dans votre cas. Essayez de redémarrer les clusters et le service Postgres

Étape 2: redémarrez pg_ctlcluster

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

#restart postgres
Sudo service postgres restart

Étape 3: l'étape 2 a échoué et a généré une erreur

Si ce processus ne réussit pas, il générera 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é des postgres

Assurez-vous que postgres est le propriétaire de /var/lib/postgresql/version_no/main par exemple: 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 postgres restart
5
Noushad

Vous êtes sous Ubuntu. Vous pouvez utiliser des wrappers Debian. Essayez pg_ctlcluster 9.6 main start (vous pouvez changer main pour le nom de votre cluster.

Pour vérifier si une autre version de PostgreSQL est en cours d'exécution, essayez ps -ef | grep postgres.

Si cela ne démarre pas avec pg_ctlcluster. Regardez les journaux. Pour Debian, la journalisation par défaut est dans /var/log/postgresql.

1
Arkhena

J'ai résolu ce problème en quelques vérifications

root@biber-OptiPlex-380:/home/biber/kailas/RoR/demo# su - postgres
postgres@biber-OptiPlex-380:~$ psql
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"?
postgres@biber-OptiPlex-380:~$ service postgresql status
9.5/main (port 5432): down
postgres@biber-OptiPlex-380:~$ service postgresql start
 * Starting PostgreSQL 9.5 database server                                                                                                        [ OK ] 
postgres@biber-OptiPlex-380:~$ service postgresql status
9.5/main (port 5432): online
postgres@biber-OptiPlex-380:~$ psql
psql (9.5.19)
Type "help" for help.

postgres=#
0
Kailas Kakade