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
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.
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.
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
pg_lsclusters
listera tous les clusters postgres en cours d'exécution sur votre appareilpar 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
#format is pg_ctlcluster <version> <cluster> <action>
Sudo pg_ctlcluster 9.6 main start
#restart postgres
Sudo service postgres restart
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`
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/
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
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
.
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=#