Pourquoi psql ne peut pas se connecter au serveur?
J'ai tapé psql
et j'obtiens 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 l'état mais rien ne s'est présenté.
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
. Il ne peut pas travailler.
source d'informationauteur deathlee
Vous devez vous connecter pour publier un commentaire.
Le message d'erreur indique que le psql utilitaire ne pouvez pas trouver le socket pour se connecter à votre serveur de base de données. Soit vous n'avez pas la base de données de service en cours d'exécution en arrière-plan, ou la prise est situé à une autre, ou peut-être la
pg_hba.conf
doit être corrigé.Étape 1: Vérifiez que la base de données est en cours d'exécution
La commande peut varier selon votre système d'exploitation. Mais sur la plupart des *ix systèmes suivants, il sera à la recherche pour postgres parmi tous les processus en cours d'exécution
Sur mon système, mac osx, cet crache
La dernière colonne montre la commande utilisée pour démarrer le serveur, et les options.
Vous pouvez regarder toutes les options disponibles pour démarrer le serveur postgres à l'aide de la suite.
À partir de là, vous pouvez voir les options
-D
et-r
sont respectivement lesdatadir
& lalogfilename
.Étape 2: Si le service postgres est en cours d'exécution
Utilisation
find
à la recherche de l'emplacement du support, qui doit être quelque part dans le/tmp
Si postgres est en cours d'exécution et en acceptant les connexions socket, le dessus doit vous indiquer l'emplacement de la prise. Sur ma machine, il s'est avéré être:
Ensuite, essayez de vous connecter via psql à l'aide de ce fichier à l'emplacement explicitement, par exemple.
Étape 3: Si le service est en cours d'exécution, mais vous ne voyez pas un socket
Si vous ne trouvez pas le support, mais de voir que le service est en cours d'exécution, Vérifiez que le pg_hba.fichier conf local permet de sockets.
Recherchez le
datadir
et vous devriez trouver lepg_hba.conf
fichier.Par défaut, en bas du fichier, vous devez voir les lignes suivantes:
Si vous ne le voyez pas, vous pouvez modifier le fichier et redémarrez le service postgres.
Résolu! Bien que je ne sais pas ce qui s'est passé, mais je viens de supprimer tous les trucs et réinstallé. C'est la commande que j'ai utilisé pour supprimer
sudo apt-get --purge remove postgresql\*
etdpkg -l | grep postgres
. Le second est de trouver tous les paquets dans le cas où il n'est pas propre.J'ai rencontré un problème similaire, avec une couple de fois. Normalement, je viens de faire une nouvelle installation de PostgreSQL suite à cette tutoriel et qui permet de résoudre le problème au détriment de la perte de données.
J'étais déterminé à obtenir vraie solution aujourd'hui. Redémarrer PostgreSQL résolu sur ubuntu.
sudo /etc/init.d/postgresql restart
Si il n'y a pas d'erreur au démarrage du service postgres, suivez ces étapes
Étape 1: Exécution d'
pg_lsclusters
la liste de toutes les postgres clusters en cours d'exécution sur votre appareilpar exemple:
probablement l'état sera dans votre cas et postgres service
Étape 2: Redémarrage de l'pg_ctlcluster
Étape 3: Étape 2 a échoué et a jeté erreur
Si ce processus n'est pas réussi, il va jeter l'erreur.
Mon erreur a été(Vous pouvez voir le journal des erreurs sur
/var/log/postgresql/postgresql-9.6-main.log
)Étape 4: vérification de la propriété de 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érifiez qu'utilisateur postgres appartient à ssl-cert groupe d'utilisateurs
Il m'est arrivé et il s'est avéré que j'ai supprimé par erreur l'utilisateur Postgres "ssl-cert" du groupe. Exécuter le code ci-dessous pour corriger le groupe d'utilisateurs émettre et de fixer les autorisations
Veux juste faire un petit ajout: si votre instance est de se plaindre sur un support, vous pouvez également vérifier
unix_socket_directories
à/data/postgresql.conf
de fichier qui pourrait avoir été mis à/tmp
par exemple, si vous avez utilisé une 3ème partie de la distribution. Vous pouvez le modifier à/var/run/postgresql
et redémarrez le service. Qui peut également exiger la création d'unpostgresql
dir à/var/run
etsubsys/postgresql-9.6
à/var/lock
si ceux n'existe pas déjà (a fonctionné pour moi avec postgresql 9.6).rapide tutoriel sur la debian:
/etc/postgresql/10/main/postgresql.conf
avec listen_address */etc/postgresql/10/main/pg_hba.conf
et ajouter la ligne à la fin avec lehost all all 0/0 md5
postgres=# CREATE ROLE remoteuser LOGIN WITH PASSWORD 'foo'
sudo /etc/init.d/postgresql restart
modifications prennent effetde connexion de client avec
psql --host=ipofserver --port=5432 --username=remoteuser --password --dbname=mydb
c'est comment accéder à distance à la base de données postgres sur le serveur de la psql client
Mon problème avec ce message d'erreur est incorrect des autorisations sur la clé et pem certificats, j'ai manipulé. Ce qui m'a beaucoup aidé a:
/var/log/postgresql/postgresql-9.5-main.journal, où sont les erreurs.
Donc pour moi et mes copains de travail sur un Node.js app (avec Postgres et Sequelize), nous avons dû
brew install postgresql
(l'un de nous n'avait pas postgres, l'un de nous n'était pas, et pourtant, nous avons d'obtenir le même msg d'erreur comme indiqué ci-dessus)brew services start postgresql
**** (utiliser Homebrew pour commencer postgres)createdb <name of database in config.json file>
node_modules/.bin/sequelize db:migrate
npm start
Au cours de la nouvelle installation de postgresql. Par défaut, le nom d'utilisateur et le mot de passe est affecté en tant que "postgres". La fonctionnalité de ce SGBDR offre est pour ajouter un rôle pour les nouveaux utilisateurs et de créer une base de données. Si vous êtes l'obtention de telles erreurs:
de connexion par défaut nom d'utilisateur:
root@kalilinux:~# sudo -i-u postgres
epl psql pour l'invite interactive
postgres@kalilinux:~$ psql
Pour quitter l'invite de l'utilisation
\q
Pour créer un nouveau rôle d'utilisateur
postgres@kalilinux:~$ createuser --interactive
Maintenant, vous êtes dans interacive psql shell. Profitez de. N'oubliez pas de vous connecter à partir de votre nom d'utilisateur et le type de psql pour shell.