Ich habe es geschafft, meine lokale Entwicklungsumgebung zu borken.
Alle meine lokalen Rails-Apps geben jetzt den Fehler aus:
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"?
Ich habe keine Ahnung, was das verursacht hat.
Bei der Suche nach einer Lösung habe ich alle gebündelten Edelsteine, aktualisierten Systemedelsteine und aktualisierten MacPorts aktualisiert. Keine Freude.
Andere haben dieses Problem beim Upgrade von OSX Leopard auf Lion gemeldet, da Unklarheiten darüber bestehen, welche Version von Postgres verwendet werden soll (dh OSX-Version oder MacPorts-Version). Ich leite Lion seit mehreren Monaten, daher scheint es seltsam, dass dies jetzt passieren sollte.
Ich zögere es, zu viel herumzuspielen, ohne vorher zu verstehen, wo das Problem liegt. Wie kann ich dies methodisch debuggen?
Wie kann ich feststellen, wie viele Versionen von PostgreSQL sich auf meinem System befinden, auf welche Version zugegriffen wird und wo sie sich befindet? Wie behebe ich das, wenn das falsche PostgreSQL verwendet wird?
Entschuldigung für die Noob-Fragen. Ich lerne immer noch, wie das funktioniert! Vielen Dank für Hinweise.
BEARBEITEN
Einige Updates basierend auf Vorschlägen und Kommentaren unten.
Ich habe versucht zu laufen, pg_lsclusters
was einen command not found
Fehler zurückgab .
Ich habe dann versucht, meine Datei pg_hba.conf zu lokalisieren und diese drei Beispieldateien gefunden:
/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
Ich gehe also davon aus, dass 3 Versionen von PSQL installiert sind? Macports, OSX Standard und ???.
Ich habe dann nach dem Startskript von launchctl gesucht, ps -ef | grep postgres
das zurückgegeben wurde
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
Ich habe den Inhalt von postgresql84-server.wrapper unter http://pastebin.com/Gj5TpP62 veröffentlicht .
Ich habe versucht zu laufen, port load postgresql184-server
aber eine Fehlermeldung erhalten Error: Port postgresql184-server not found
.
Ich bin immer noch sehr verwirrt, wie ich das beheben kann, und schätze alle "für Dummies" -Zeiger.
Vielen Dank!
EDIT2
Dieses Problem begann, nachdem ich einige Probleme mit Daemondo hatte. Meine lokalen Rails-Apps stürzten mit einem Anwendungsfehler nach dem Motto "Daemondo Gem kann nicht gefunden werden" ab. Ich habe dann eine Reihe von Bundle-Updates, Gem-Updates, Port-Updates und Brew-Updates durchgesehen, um das Problem zu finden.
Könnte dieser Fehler ein Problem mit daemondo sein?
quelle
pg_lsclusters
und Ihrepg_hba.conf
Datei.Antworten:
Dies sieht wirklich wie ein Dateiberechtigungsfehler aus. Unix-Domain-Sockets sind Dateien und verfügen wie alle anderen über Benutzerberechtigungen. Es sieht so aus, als ob der OSX-Benutzer, der versucht, auf die Datenbank zuzugreifen, keine Dateiberechtigungen für den Zugriff auf die Socket-Datei hat. Um dies zu bestätigen, habe ich einige Tests unter Ubuntu und psql durchgeführt, um den gleichen Fehler zu generieren (siehe unten).
Sie müssen die Berechtigungen für die Socket-Datei und ihre Verzeichnisse
/var
und überprüfen/var/pgsql_socket
. Ihre Rails-App (OSX-Benutzer) muss über Ausführungsberechtigungen (x) für diese Verzeichnisse verfügen (vorzugsweise allen Berechtigungen erteilen), und der Socket sollte über vollständige Berechtigungen (wrx) verfügen. Sie können verwendenls -lAd <file>
, um sie zu überprüfen. Wenn einer von ihnen ein Symlink ist, müssen Sie die Datei überprüfen oder den Link verweisen, auf den der Link verweist.Sie können die Berechtigungen für das Verzeichnis für sich selbst ändern, aber der Socket wird von postgres in konfiguriert
postgresql.conf
. Dies befindet sich im selben Verzeichnis wiepg_hba.conf
(Sie müssen herausfinden, welches). Sobald Sie die Berechtigungen festgelegt haben, müssen Sie postgresql neu starten.BEARBEITEN:
Ich habe eine schnelle Suche bei Google durchgeführt, die Sie möglicherweise untersuchen möchten, um festzustellen, ob sie relevant ist. Dies kann dazu führen, dass der Versuch,
find
Ihre Konfigurationsdatei zu erstellen, fehlschlägt.http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html
Fehlermeldungen:
Benutzer nicht in pg_hba.conf gefunden
Benutzer hat Passwort-Authentifizierung fehlgeschlagen:
Fehlende Unix-Socket-Datei:
Es gibt einen Unix-Socket, aber der Server hört nicht zu.
Ungültige Dateiberechtigungen für Unix-Socket-Dateien :
quelle
PS
Gibt Postgres-Prozesse zurück, damit sie ausgeführt werden. Verwirrt!Mein Bauchgefühl ist, dass dies (wieder) ein Mac / OSX-Ding ist: Das Front-End und das Back-End nehmen einen anderen Ort für den Unix-Domain-Socket ein (der als Rendezvous fungiert) Punkt fungiert).
Checkliste:
ps aux | grep postgres | grep -v grep
sollte den Trick machenfind / -name .s.PGSQL.5432 -ls
(Der Socket befand sich früher in / tmp. Sie könnten dort nachsehen.)Wenn postgres ausgeführt wird und der Socket tatsächlich vorhanden ist, können Sie Folgendes verwenden:
psql -h /the/directory/where/the/socket/was/found mydbname
(der versucht, eine Verbindung zum Unix-Domain-Socket herzustellen)
;; Sie sollten jetzt die psql-Eingabeaufforderung erhalten: versuchen Sie
\d
und\q
beenden Sie dann. Sie könnten auch versuchen:psql -h localhost mydbname
.(der versucht, eine Verbindung zu localhost herzustellen (127.0.0.1)
Wenn diese Versuche aufgrund unzureichender Autorisierung fehlschlagen, können Sie pg_hba.conf (und SIGHUP oder Neustart) ändern. In diesem Fall: Überprüfen Sie auch die Protokolle.
Eine ähnliche Frage: Postgres kann nicht gestartet werden
Hinweis: Wenn Sie zur psql-Eingabeaufforderung gelangen, können Sie dieses Problem schnell beheben, indem Sie Folgendes
config/database.yml
hinzufügen:host: localhost
oder Sie könnten versuchen hinzuzufügen:
host: /the/directory/where/the/socket/was/found
In meinem Fall,
host: /tmp
quelle
Versuchen Sie, pg gem (
gem uninstall pg
) zu deinstallieren und dann neu zu installieren - wenn Sie Bundler verwenden, dannbundle install
sonstgem install pg
. Stellen Sie außerdem sicher, dass path die richtige Version aufnimmt: Lion hat eine Version von posgresql (frühere Versionen nicht) und befindet sich möglicherweise im Pfad vor Ihrer lokal installierten Version (z. B. MacPorts, Homebrew).In meinem Fall: Homebrew-Installation von Postgresql, aktualisiertem Postgresql, Rails usw. und dann dieser Fehler. Das Deinstallieren und Neuinstallieren des pg gem hat es für mich getan.
quelle
Der Speicherort der Socket-Datei wird beim Kompilieren in den Edelstein eingebrannt. Daher müssen Sie Ihren pg-Edelstein neu erstellen.
Dies sollte dieses spezielle Problem beheben.
quelle
Wenn Sie einen ähnlichen Fehler erhalten:
Dies könnte den Trick machen (es hat für mich getan):
Das angegebene Verzeichnis sollte unterschiedlich sein, wenn Sie OSX / Brew nicht verwenden.
Hinweis: Dies ist nicht die genaue Fehlermeldung, die oben angezeigt wird. Dieser Thread ist jedoch das erste Ergebnis für diese Fehlermeldung.
quelle
rm -fr /usr/local/var/postgres
vor dem Laufeninitb
rm -rf /usr/local/var/postgres
dann auch tuninitdb /usr/local/var/postgres -E utf8
. Stellen Sie jedoch sicher, dass postgres nicht ausgeführt wird, da das Verzeichnis sonst fast sofort neu erstellt wird.Was diesen Fehler für mich behoben hat, war das Löschen einer Datei namens postmaster.pid im postgres-Verzeichnis. Eine schrittweise Anleitung finden Sie in meiner Frage / Antwort unter dem folgenden Link. Mein Problem hatte nichts mit Dateiberechtigungen zu tun:
psql: Verbindung zum Server konnte nicht hergestellt werden: Keine solche Datei oder kein solches Verzeichnis (Mac OS X)
Die Leute, die diese Frage beantworteten, ließen jedoch viel Spiel fallen, danke dafür! Ich habe alles, was ich konnte, positiv bewertet
quelle
Auf diese Weise habe ich diese Fehlermeldung gelöst, die teilweise auf der Antwort von Wildplasser basiert.
Also, da ist meine Steckdose oder was auch immer, aber der Kunde sucht danach:
Stellen Sie also ganz einfach eine symbolische Verknüpfung her zu
/tmp/.s.PGSQL.5432
:Hoffe das hilft jedem. Das scheint irgendwie falsch zu sein, aber hey, es funktioniert!
quelle
sudo mkdir /var/run/postgresql
Ordner zu erstellen (in meinem Fall war die ID nicht vorhanden und wurde vom Installationsprogramm für Seite 9.3.X nicht erstellt).Ich bekam dies nach dem Upgrade auf ein neues Postgres - ich wusste nicht, dass ich Datendateien gespeichert hatte.
Zuerst habe ich versucht, den Postgres-Server zu starten:
So habe ich diesen Fehler gesehen
Also fand ich diese Antwort auf SO - im Zusammenhang mit einem Inkompatibilitätsfehler: /server/342626/how-do-i-upgrade-postgresl-database-incompatibility-error
Dies hat es behoben
quelle
Ich habe nur bestätigt, dass ich ein ähnliches Problem mit PSQL und Django hatte.
Es sah so aus, als ob mein psql-Server nicht richtig heruntergefahren wurde und die Datei postmaster.pid noch in meinem Postgres-Ordner vorhanden war (sollte beim ordnungsgemäßen Herunterfahren automatisch gelöscht werden).
Löschte dies und alles gut
quelle
psql: could not connect to server: No such file or directory.
Entfernenpostmaster.pid
von/usr/local/var/postgres
alles wieder funktioniert.Ich habe den gleichen Fehler erhalten (es stellte sich heraus, dass es sich um einen Fehler handelte
postmaster.pid
. So habe ich Postgres wieder in Betrieb genommen (Dank an Ricardo Burillo für die Korrektur ):quelle
pg_resetxlog
zurückgegebene Sperrdatei "postmaster.pid" existiert.Ich hatte ein ähnliches Problem beim Versuch, postgresql mit Schienen zu verwenden. Das Aktualisieren meiner Gemfile auf die Verwendung einer neuen Version von gem pg löst dieses Problem für mich. (gem pg version 0.16.0 funktioniert). In der Gemfile verwenden:
Führen Sie dann die folgenden Schritte aus, um den Edelstein zu aktualisieren
quelle
Ich habe viele Themen zu diesem Fehler gelesen und die Lösung für mich bestand darin, die Postgres einfach neu zu starten mit:
Was hier nicht erwähnt wird.
quelle
Ich suche eine Weile nach der Lösung. Also, dieser hat das Problem auch für mich behoben (Datenbank neu starten):
Ich benutze OS X 10.11.3 mit Brew.
quelle
Dies ist mir heute passiert, nachdem der Akku meines Macbooks leer war. Ich denke, dies kann durch unsachgemäßes Herunterfahren verursacht werden. Alles was Sie in Fällen wie meinem tun müssen, ist postmaster.pid zu löschen
Navigieren Sie zum Ordner
Überprüfen Sie, ob postmaster.pid vorhanden ist
Entfernen Sie postmaster.pid
quelle
In meinem Fall war keine der vorherigen Lösungen gut. Anstatt Socket zu verwenden, können Sie die TCP
host
+port
-Nummer in der Rails-Konfigurationsdatei verwenden. Fügen Sie in derdatabase.yml
Datei einfach zwei Zeilen wie hier hinzu:Das hat mein Problem gelöst :)
Bevor ich dieses Update verwendet habe:
Aber nach jedem Neustart
/tmp/.s.PGSQL.5432
wurde gelöscht und ich musste diese Befehle wiederholen. Die Lösung funktioniert, aber es ist schrecklich, also ändern Sie besser einfach die Konfigurationsdatei der Rails-Datenbank :)quelle
Ich habe diesen Fehler erhalten, als ich Posgtres mit Django eingerichtet habe. Ich verwende Back Track und es wird Postgres installiert. Ich gehe davon aus, dass die Einstellungen das Problem sind. Ich habe es behoben, indem ich es vollständig entfernt und dann neu installiert habe.
Führen Sie jetzt aus:
um alles PostgreSQL von Ihrem System zu entfernen. Nur das Postgres-Paket zu löschen, reicht nicht aus, da es sich nur um ein leeres Metapaket handelt.
Führen Sie Folgendes aus, nachdem alle PostgreSQL-Pakete entfernt wurden:
Sie sollten jetzt in der Lage sein:
quelle
MacOSX hier. Ich hatte das gleiche Problem, nachdem ich meine Postresql-Installation mit Homebrew von 9.1 auf 9.1.2 aktualisiert hatte. (Denken Sie übrigens daran, Datenbanken vor dem Upgrade mit pg_dump zu sichern. Datenbanken vor 9.1 sind nicht kompatibel.) Gleiches Problem, gleiche Fehlermeldungen.
Das Deinstallieren des pg gem hat den Trick für mich getan. Ich musste tatsächlich ziemlich viel tanzen, um das Problem zu entdecken. Zuerst habe ich eine globale Edelstein-Deinstallation durchgeführt und das Deck von allen alten Edelsteinen befreit (es gab einige). Dann entfernte ich pg aus meiner Gemfile, bündelte neu, stellte die pg-Referenz wieder her und prallte erneut ab.
Danach funktionierte es wie ein Zauber.
quelle
Hallo Welt :)
Der beste, aber seltsame Weg für mich war, die nächsten Dinge zu tun.
1) Laden Sie postgres93.app oder eine andere Version herunter . Fügen Sie diese App in den Ordner / Applications / ein.
2) Fügen Sie der Datei
Es ist ein Weg.bash_profile
(die sich in meinem Ausgangsverzeichnis befindet) eine Zeile (Befehl ) hinzu:psql
vonPostgres93.app
. Die Zeile (Befehl) wird bei jedem Start der Konsole ausgeführt.3) Starten Sie
Postgres93.app
vom/Applications/
Ordner. Es startet einen lokalen Server (Port ist "5432" und Host ist "localhost").4) Nach all diesen Manipulationen war ich froh,
$ createuser -SRDP user_name
und andere Befehle auszuführen und zu sehen, dass es funktionierte!Postgres93.app
kann bei jedem Systemstart ausgeführt werden.5) Auch wenn Sie Ihre Datenbanken grafisch anzeigen möchten, sollten Sie installieren
PG Commander.app
. Es ist eine gute Möglichkeit, Ihre Postgres-Datenbank als hübsche Datentabellen zu betrachtenNatürlich ist es nur für lokale Server hilfreich. Ich würde mich freuen, wenn diese Anleitung anderen hilft, die mit diesem Problem konfrontiert sind.
quelle
Ich hatte dieses Problem, das mich plagte, und bei weiteren Untersuchungen (Ausführen
rake db:setup
) stellte ich fest, dass Rails versuchte, eine Verbindung zu einer zuvor verwendeten Postgres-Instanz herzustellen - eine, die in env-Variablen als DATABASE_URL gespeichert war.Die Reparatur:
unset DATABASE_URL
Quelle: https://stackoverflow.com/a/17420624/2577622
quelle
Ich habe die meisten Lösungen für dieses Problem ausprobiert, konnte aber keine zum Laufen bringen.
Ich lief,
lsof -P | grep ':5432' | awk '{print $2}'
was die PID des laufenden Prozesses zeigte. Ich konnte es jedoch nicht tötenkill -9 <pid>
.Als ich lief
pkill postgresql
, hörte der Prozess schließlich auf. Hoffe das hilft.quelle
Unter OS X mit Homebrew:
quelle