J'ai tapé psql
et je reçois ceci:
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"?
J'ai utilisé Sudo netstat -nlp | grep 5432
pour voir le statut mais rien ne s'affiche. Et j'ai cherché en ligne, quelqu'un m'a dit de modifier pg_hba.conf
mais je ne peux pas locate
ce fichier. Et j'ai aussi essayé cette commandeSudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
. Ça ne peut pas marcher.
L'erreur indique que l'utilitaire psql ne parvient pas à trouver le socket pour se connecter à votre serveur de base de données. Soit le service de base de données ne fonctionne pas en arrière-plan, soit le socket est situé ailleurs, soit le pg_hba.conf
doit peut-être être corrigé.
La commande peut varier en fonction de votre système d'exploitation. Mais sur la plupart des systèmes * ix, les éléments suivants fonctionneraient, il recherchera postgres parmi tous les processus en cours
ps -ef | grep postgres
Sur mon système, mac osx, cela crache
501 408 1 0 2Jul15 ?? 0:21.63 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log
La dernière colonne affiche la commande utilisée pour démarrer le serveur et les options.
Vous pouvez consulter toutes les options disponibles pour démarrer le serveur postgres en utilisant les éléments suivants.
man postgres
À partir de là, vous constaterez que les options -D
et -r
sont respectivement les options datadir
et logfilename
.
Utilisez find
pour rechercher l'emplacement du socket, qui devrait figurer quelque part dans le /tmp
Sudo find /tmp/ -name .s.PGSQL.5432
Si postgres est en cours d'exécution et accepte les connexions de socket, la procédure ci-dessus devrait vous indiquer l'emplacement de la socket. Sur ma machine, cela s'est avéré être:
/tmp/.s.PGSQL.5432
Ensuite, essayez de vous connecter via psql en utilisant explicitement l’emplacement de ce fichier, par exemple.
psql -h /tmp/ dbname
Si vous ne trouvez pas le socket mais constatez que le service est en cours d'exécution, vérifiez que le fichier pg_hba.conf autorise les sockets locaux.
Accédez à la variable datadir
et vous devriez trouver le fichier pg_hba.conf
.
Par défaut, vers le bas du fichier, vous devriez voir les lignes suivantes:
# "local" is for Unix domain socket connections only
local all all trust
Si vous ne le voyez pas, vous pouvez modifier le fichier et redémarrer le service postgres.
S'il n'y a pas d'erreur dans le démarrage du service postgres, suivez ces étapes
pg_lsclusters
répertoriera tous les clusters postgres exécutés 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
très probablement le statut sera en panne dans votre cas 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 n'aboutit pas, cela 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
eg: 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 résoudre 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
# now postgresql starts! (and install command doesn't fail anymore)
Sudo service postgres restart
J'ai rencontré un problème similaire à quelques reprises. Normalement, je viens de faire une nouvelle installation de PostgreSQL en suivant ce tutorial et cela résout le problème au détriment de la perte de données.
J'étais déterminé à obtenir une vraie solution aujourd'hui. Le redémarrage de PostgreSQL l'a résolu sur Ubuntu. Sudo /etc/init.d/postgresql restart
Résolu! Bien que je ne sache pas ce qui s'est passé, je viens de supprimer tout le matériel et de le réinstaller. C’est la commande que j’ai utilisée pour le supprimer Sudo apt-get --purge remove postgresql\*
et dpkg -l | grep postgres
. Le dernier est de trouver tous les paquets au cas où ce ne serait pas propre.
J'ai eu le même problème sur Devuan Ascii (peut-être aussi Debian?). Le fichier de configuration /etc/postgresql/9.6/main/postgresql.conf
contient une directive unix_socket_directories
qui pointe par défaut sur /var/run/postgresql
. Le changer en /tmp
, où la plupart des clients regardent par défaut, corrigea mon problème.
Donc, pour que mes copains et moi travaillions sur une application Node.js (avec Postgres et Sequelize), nous avons dû
brew install postgresql
(l'un de nous manquait de postgres, l'un de nous ne l'était pas, et pourtant nous obtenions le même message d'erreur que celui indiqué ci-dessus)
brew services start postgresql
**** (utilisez Homebrew pour démarrer postgres)
createdb <name of database in config.json file>
node_modules/.bin/sequelize db:migrate
npm start
Je veux juste faire un petit ajout: si votre instance se plaint sur un socket, vous pouvez également vérifier unix_socket_directories
dans le fichier /data/postgresql.conf
qui aurait pu être défini sur /tmp
, par exemple si vous avez utilisé une distribution tierce. Vous pouvez le changer en /var/run/postgresql
et redémarrer le service. Cela peut également nécessiter la création d'un répertoire postgresql
à /var/run
et subsys/postgresql-9.6
à /var/lock
si ceux-ci n'existent pas déjà (cela a fonctionné pour moi avec postgresql 9.6).
L'erreur signifie que le serveur Postgres n'est pas en cours d'exécution. Essayez de le démarrer:
Sudo systemctl start postgresql
Assurez-vous que le serveur démarre au démarrage:
Sudo systemctl enable postgresql
petit guide sur Debian:
/etc/postgresql/10/main/postgresql.conf
avec listen_address */etc/postgresql/10/main/pg_hba.conf
et ajoutez une ligne à la fin avec Host all all 0/0 md5
postgres=# CREATE ROLE remoteuser LOGIN WITH PASSWORD 'foo'
Sudo /etc/init.d/postgresql restart
changements prennent effet
se connecter depuis clientside avec psql --Host=ipofserver --port=5432 --username=remoteuser --password --dbname=mydb
comment accéder à distance à la base de données postgres sur le serveur à partir du client psql
Cela peut causer n'importe quoi, par exemple, mon problème a été causé par une erreur typographique sur les fichiers de configuration . Certaines personnes disent que causées par des fichiers de certificat, un autre groupe dit causées par des locaux sans correspondance.
Si vous ne trouvez pas de solution à votre problème, supprimez postgres et réinstallez-le. C'est la meilleure solution.
Lors de l’installation récente de postgresql. Par défaut, le nom d'utilisateur et le mot de passe sont affectés à "postgres". La fonctionnalité fournie par ce SGBDR consiste à ajouter un rôle pour le nouvel utilisateur et à créer une base de données. Si vous obtenez de telles erreurs:
se connecter par nom d'utilisateur par défaut:
root @ kalilinux: ~ # Sudo -i -u postgres
ype psql pour invite interactive
postgres @ kalilinux: ~ $ psql
Pour quitter l'utilisation rapide
\ q
Pour créer un nouveau rôle d'utilisateur
postgres @ kalilinux: ~ $ createuser --interactive
Maintenant, vous êtes dans shell psql interacive. Prendre plaisir. N'oubliez pas de vous connecter à partir de votre nom d'utilisateur et tapez psql pour Shell.
Mon problème avec ce message d'erreur concernait des autorisations erronées sur des certificats de clé et PEM, que j'ai manipulés. Ce qui m'a beaucoup aidé, c'est: /Var/log/postgresql/postgresql-9.5-main.log où se trouvent toutes les erreurs.
J'ai résolu ce problème en vérifiant mon système de fichiers Le disque était complètement plein et la base de données n'a donc pas pu démarrer
connexions sur socket de domaine Unix "/var/run/postgresql/.s.PGSQL.5432" ?
J'ai essayé des séries de dépannage, jusqu'à quand j'ai vérifié l'utilisation de mon disque et constaté qu'il était plein, 100% d'utilisation,
df -h
cd /var/log/odoo/
cat /dev/null > odoo-server.log
reboot
Je faisais face au même problème et
Sudo su - postgres
initdb --locale en_US.UTF-8 -D /var/lib/postgres/data
exit
Sudo systemctl start postgresql
Sudo systemctl status postgresql
Cela a fonctionné pour moi.