Ne peut pas se connecter à PostgreSQL locale
J'ai réussi à bork mon environnement local de développement.
Tous mes locaux Rails applications sont désormais de donner le message d'erreur:
PGError
could not connect to server: Permission denied
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
J'ai aucune idée de ce qui a causé cela.
Alors que la recherche d'une solution, j'ai mis à jour tous groupés en des joyaux, de la mise à jour du système de gemmes, mis à jour MacPorts. Pas de joie.
D'autres ont signalé ce problème lors de la mise à niveau à partir de OSX Leopard à Lion, en raison de la confusion sur la version de Postgres doit être utilisé (c'est à dire, OSX version ou MacPorts version). J'ai été en cours d'exécution du Lion pour plusieurs mois, il semble étrange que cela doit se passer maintenant.
Je suis réticent à perdre trop de sans d'abord comprendre quel est le problème. Comment puis-je corriger de cette façon méthodique?
Comment puis-je déterminer le nombre de versions de PostgreSQL sont sur mon système, qui est en cours d'accès, et où il est situé? Comment puis-je résoudre ce problème si le mauvais PostgreSQL est utilisé?
Désolé pour les questions de noob. Je suis encore à apprendre comment cela fonctionne! Merci pour tous les pointeurs.
MODIFIER
Certaines mises à jour basées sur les suggestions et les commentaires ci-dessous.
J'ai essayé d'exécuter pg_lsclusters
qui a retourné un command not found
erreur.
J'ai ensuite essayé en local mon pg_hba.fichier conf et a trouvé ces trois exemples de fichiers:
/opt/local/share/postgresql84/pg_hba.conf.sample
/opt/local/var/macports/software/postgresql84/8.4.7_0/opt/local/share/postgresql84/pg_hba.conf.sample
/usr/share/postgresql/pg_hba.conf.sample
Donc je suppose que les 3 versions du PSQL sont installés? Macports, OSX par défaut et ???.
J'ai ensuite fait une recherche pour le launchctl script de démarrage ps -ef | grep postgres
qui a retourné
0 56 1 0 11:41AM ?? 0:00.02 /opt/local/bin/daemondo --label=postgresql84-server --start-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper start ; --stop-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper stop ; --restart-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper restart ; --pid=none
500 372 1 0 11:42AM ?? 0:00.17 /opt/local/lib/postgresql84/bin/postgres -D /opt/local/var/db/postgresql84/defaultdb
500 766 372 0 11:43AM ?? 0:00.37 postgres: writer process
500 767 372 0 11:43AM ?? 0:00.24 postgres: wal writer process
500 768 372 0 11:43AM ?? 0:00.16 postgres: autovacuum launcher process
500 769 372 0 11:43AM ?? 0:00.08 postgres: stats collector process
501 4497 1016 0 12:36PM ttys000 0:00.00 grep postgres
J'ai affiché le contenu de postgresql84-serveur.emballage sur http://pastebin.com/Gj5TpP62.
J'ai essayé d'exécuter port load postgresql184-server
mais il a reçu une erreur Error: Port postgresql184-server not found
.
Je suis encore très confus comment résoudre ce problème, et d'apprécier tout "pour les nuls" pointeurs.
Merci!
EDIT2
Ce problème a commencé après que j'ai eu quelques problèmes avec daemondo. Mon local Rails apps ont été s'écraser avec une erreur d'application le long des lignes de "daemondo gem peut pas être trouvé". Ensuite, je suis allé à travers une série de bundle mises à jour, les mises à jour, port de mises à jour et à l'infusion de mises à jour pour essayer de trouver le problème.
Cette erreur pourrait être un problème avec daemondo?
- Notez que lorsque votre application se connecte, il se connecte via le port tcp au lieu de la socket de domaine unix. Si vous avez besoin de config postgres pour accepter des connexions réseau, au moins à partir de localhost.
- Pourquoi croyez-vous donc? Évidemment, les pilotes tentent de se connecter via la socket Unix. S'ils regardent pour la prise à la mauvaise place.
- double possible de Comment faire pour résoudre ce PostgreSQL erreur sur OS 10.6 (Snow Leopard)
- Exactement. Il semble être un mac-chose. L'OP peut utiliser l'option-h drapeau, après avoir vérifié que le maître de poste est en cours d'exécution.
- Veuillez envoyer la sortie de
pg_lsclusters
et votrepg_hba.conf
fichier. - Merci pour toutes ces suggestions. J'ai édité la question d'origine avec quelques résultats. J'apprécie vraiment votre aide pour comprendre et fox cette question.
- Il pourrait être un problème de CHEMIN d'accès Voir question similaire, stackoverflow.com/questions/6770649/...
Vous devez vous connecter pour publier un commentaire.
Cela ressemble vraiment à un fichier des autorisations d'erreur. Les sockets de domaine Unix sont des fichiers, et les autorisations de l'utilisateur comme tous les autres. Il semble que la OSX utilisateur tente d'accéder à la base de données n'a pas les autorisations de fichier pour accéder au fichier de socket. Pour confirmer ce que j'ai fait quelques tests sur Ubuntu et psql pour essayer de générer le même message d'erreur (ci-dessous).
Vous avez besoin de vérifier les autorisations sur le fichier de socket et de ses répertoires
/var
et/var/pgsql_socket
. Votre application Rails (OSX utilisateur) doit exécuter (x) autorisations sur ces répertoires (de préférence à accorder à tous les permissions) et la prise de courant doit disposer des autorisations complètes (wrx). Vous pouvez utiliserls -lAd <file>
de les vérifier, et si l'un d'eux est un lien symbolique, vous devez vérifier le fichier ou le dir le lien.Vous pouvez modifier les autorisations sur le dossier pour vous-même, mais le support est configuré par postgres dans
postgresql.conf
. Cela peut être trouvé dans le même répertoire quepg_hba.conf
(Vous aurez à comprendre que l'on). Une fois que vous avez les autorisations que vous aurez besoin de redémarrer postgresql.EDIT:
J'ai fait une recherche rapide sur google que vous pouvez regarder pour voir si il est relavent.
Cela pourrait bien faire en sorte que toute tentative de
find
votre fichier de config défaut.http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html
Messages d'erreur:
L'utilisateur n'est pas trouvé dans pg_hba.conf
Utilisateur n'a pas de mot de passe auth:
Manquant fichier de socket unix:
Socket Unix existe, mais le serveur ne l'écoutent pas.
Mauvais fichier de permissions sur le fichier de socket unix:
PS
retourne postgres processus de sorte qu'il est en cours d'exécution. Confus!Mon sentiment est que c'est (encore) un mac/OSX-chose: l'extrémité avant et l'extrémité arrière assumer un emplacement différent pour les unix socket de domaine (qui fonctionne comme un rendez-vous point).
Liste de contrôle:
ps aux | grep postgres | grep -v grep
devrait faire l'affairefind /-name .s.PGSQL.5432 -ls
(le socket utilisé pour être dans /tmp; vous pouvez commencer la recherche, il ya)Si postgres est en cours d'exécution, et la prise en existe un, vous pouvez utiliser:
psql -h /the/directory/where/the/socket/was/found mydbname
(qui tente de se connecter à la unix socket de domaine)
; vous devez maintenant obtenir le psql invite: essayez
\d
et puis\q
à cesser de fumer. Vous pouvez égalementessayez:
psql -h localhost mydbname
.(qui tente de se connecter à localhost (127.0.0.1)
Si ces tentatives échouent en raison de l'insuffisance de l'autorisation, vous pouvez modifier pg_hba.conf (et SIGHUP ou redémarrez-le) Dans ce cas: aussi consulter les journaux.
Une question similaire: Ne pouvez pas obtenir Postgres commencé
Remarque: Si vous pouvez vous rendre à la psql invite, la solution rapide à ce problème, c'est juste pour changer votre
config/database.yml
, ajouter:host: localhost
ou vous pourriez essayer d'ajouter:
host: /the/directory/where/the/socket/was/found
Dans mon cas,
host: /tmp
Essayer de désinstaller le pg gem (
gem uninstall pg
) puis de réinstaller -- si vous utilisez le système de regroupement, puisbundle install
, d'autregem install pg
. Aussi, assurez-vous que le chemin ramasse la bonne version: Lion a une version de posgresql (les versions antérieures ne l'avais pas) et il peut être dans le chemin d'accès avant votre version installée localement (par exemple, MacPorts, homebrew).Dans mon cas: homebrew installation de postgresql, mis à jour postgresql, rails, etc. et puis eu cette erreur. Désinstallation et réinstallation du pg gem a fait pour moi.
L'emplacement du fichier de socket est cuit au four dans la gemme au moment de la compilation. Ainsi, vous devez reconstruire votre pg gem.
Cela devrait résoudre ce problème particulier.
Si vous obtenez une erreur similaire:
Cela pourrait faire l'affaire (il a fait pour moi):
Le répertoire spécifié doit être différente si vous ne l'utilisez pas OSX/Infusion.
Remarque: Ce n'est pas le message d'erreur exact vu ci-dessus, mais ce fil est le premier résultat de ce message d'erreur.
rm -fr /usr/local/var/postgres
avant d'exécuterinitb
rm -rf /usr/local/var/postgres
puisinitdb /usr/local/var/postgres -E utf8
. Mais assurez-vous que postgres n'est pas en cours d'exécution lorsque vous faites cela, sinon que le répertoire soit recréé presque immédiatement.ce qui a résolu cette erreur pour moi a été la suppression d'un fichier nommé maître de poste.pid dans le répertoire de postgres. veuillez voir ma question/réponse à l'aide du lien ci-dessous pour des instructions étape par étape. ma question n'était pas liée à des autorisations de fichier:
psql: impossible de se connecter au serveur: Aucun fichier ou répertoire (Mac OS X)
les gens de répondre à cette question tombé beaucoup de jeu bien, merci pour ça! je upvoted tout ce que je pouvais
C'est comment j'ai résolu le message d'erreur, basée en partie sur wildplasser de réponse.
Donc, il y a mon socket ou que ce soit, mais le client cherche à:
Donc, tout simplement faire un lien symbolique vers le
/tmp/.s.PGSQL.5432
:Espère que cela aide à personne. Le semble faux, mais bon, ça fonctionne!
sudo mkdir /var/run/postgresql
dossier (dans mon cas, l'id n'existe pas et n'a pas été créé par l'installeur pour pg 9.3.X).J'ai commencé à faire cette après la mise à niveau vers une nouvelle postgres - je ne savais pas que je devais tenir fichiers de données.
J'ai d'abord essayé de démarrer le serveur postgres:
qui est la façon dont j'ai vu cette erreur
Alors j'ai trouvé cette réponse sur ce qui est lié à une incompatibilité d'erreur: https://serverfault.com/questions/342626/how-do-i-upgrade-postgresl-database-incompatibility-error
C'est ce qu'il fixe
Juste confirmant j'ai eu un problème similaire sur PSQL et Django,
Ressemblait parce que mon psql serveur n'a pas été arrêté correctement, et le maître de poste.fichier pid est toujours présente (doit être supprimée à l'arrêt correct automatiquement) dans mon postgres dossier.
Supprimé cette et toutes les bonnes
psql: could not connect to server: No such file or directory.
Retraitpostmaster.pid
de/usr/local/var/postgres
fait, tout fonctionne à nouveau.J'ai été faire cette même erreur (il s'avère que c'était une erreur avec
postmaster.pid
. Voici comment je l'ai eu postgres et en cours d'exécution à nouveau (crédit à Ricardo Burillo pour la correction):pg_resetxlog
retourné " fichier de verrouillage "postmaster.pid" existe.J'ai eu le même problème lorsque j'essaie d'utiliser postgresql avec des rails. La mise à jour de mon Gemfile pour utiliser la nouvelle version de gem pg résoudre ce problème pour moi. (gem pg version 0.16.0 œuvres). Dans le Gemfile utilisation:
puis exécutez la procédure suivante pour mettre à jour le gem
J'ai lu de nombreux sujets à propos de cette erreur et la solution pour moi a été de simplement redémarrer la postgres avec:
Qui n'est pas mentionné ici.
Je recherche la solution pour un certain temps. Alors, ce que fixe le problème pour moi aussi (reinit db):
- Je utiliser mac OS X 10.11.3 avec brew.
Ce qui m'est arrivé aujourd'hui, après mon Macbook batterie est morte. Je pense que cela peut être causé par une mauvaise mise à l'arrêt. Tout ce que vous avez à faire dans des cas comme le mien est de supprimer le maître de poste.pid
Accédez au dossier
Vérifier pour voir si le maître de poste.pid est présent
Supprimer maître de poste.pid
Dans mon cas, aucune des solutions précédentes a été bonne. Au lieu d'utiliser les socket, vous pouvez utiliser le protocole TCP
host
+port
nombre dans les Rails fichier de configuration. Ainsi, dansdatabase.yml
fichier juste ajouter deux lignes comme ici:Cela a résolu mon problème 🙂
Avant j'ai utilisé ce correctif:
Mais après chaque redémarrage de
/tmp/.s.PGSQL.5432
a été supprimé et j'ai dû répéter ces commandes. Solution fonctionne, mais c'est horrible, donc il vaut mieux modifier juste les Rails de la base de données du fichier de config 🙂Eu cette erreur quand j'ai été la mise en place Posgtres avec Django, je suis en utilisant la Piste et il est livré avec Postgres installé. Je suppose que les paramètres de la question. Je l'ai corrigé en supprimant complètement le réinstaller comme si.
Exécuter:
pour supprimer tout ce qui PostgreSQL à partir de votre système. Juste de purger les postgres paquet n'est pas suffisante, car c'est juste un vide meta-paquet.
Une fois que tous les paquetages PostgreSQL ont été supprimés, exécutez:
Vous devriez maintenant être en mesure de:
MacOSX ici. J'ai eu le même problème après la mise à jour de mon postresql installer à partir d'une pré-9.1 à 9.1.2 l'aide de homebrew. (En passant, n'oubliez pas de dump des bases de données avant la mise à niveau avec pg_dump, pré-9.1 les bases de données sont incompatibles.) Même problème, même message d'erreur.
Désinstallation du pg gem a fait le tour pour moi. En fait j'ai eu à faire un peu de danse pour découvrir le problème. J'ai d'abord fait un mondial gem désinstaller, nettoyer la terrasse de toutes les vieilles pierres précieuses (il y en avait quelques-uns). Puis j'ai enlevé pg de mon Gemfile, rebundled, restauré le pg de référence, et a rebondi une fois de plus.
Après cela, il a travaillé comme un charme.
Bonjour tout le monde 🙂
Le meilleur, mais étrange façon pour moi de faire les choses.
1) Télécharger postgres93.app ou l'autre version. Ajouter cette application dans le dossier /Applications/.
2) Ajouter une ligne de commande (commande) dans le fichier
.bash_profile
(qui est dans mon répertoire home):C'est un CHEMIN d'accès à
psql
dePostgres93.app
. La ligne de commande (commande) s'exécute à chaque démarrage de la console est commencé.3) Lancement
Postgres93.app
de/Applications/
dossier. Il démarre un serveur local (le port est "5432" et l'hôte est "localhost").4) Après tout cela les manipulations j'ai été heureux de courir
$ createuser -SRDP user_name
et d'autres commandes et de voir que ça a fonctionné!Postgres93.app
peut être fait pour s'exécuter à chaque fois que votre système démarre.5) Aussi, si vous voulez voir vos bases de données graphiquement vous devez installer
PG Commander.app
. C'est une bonne façon de voir votre postgres DB que de jolies tables de donnéesDe, bien sûr, c'est utile uniquement pour le serveur local. Je serai content si ce mode d'aider d'autres personnes qui ont été confrontées à ce problème.
J'ai eu ce problème qui me, et après enquête (course
rake db:setup
), j'ai vu que les rails a été d'essayer de se connecter à un déjà utilisé postgres instance, qui a été stocké dans des variables d'environnement comme DATABASE_URL.Le correctif:
unset DATABASE_URL
source: https://stackoverflow.com/a/17420624/2577622
J'ai essayé la plupart des solutions à ce problème, mais ne pouvait pas faire le travail.
J'ai couru
lsof -P | grep ':5432' | awk '{print $2}'
qui a montré le PID du processus en cours d'exécution. Cependant, je ne pouvais pas la tuer aveckill -9 <pid>
.Quand j'ai couru
pkill postgresql
le processus s'est finalement arrêté. Espérons que cette aide.Sur OS X avec Homebrew: