Psql konnte keine Verbindung zum Server herstellen: Keine solche Datei oder kein solches Verzeichnis, 5432 Fehler?

113

Ich versuche, psqlauf meinem Vagrant-Computer zu laufen , erhalte jedoch folgende Fehlermeldung:

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"?

Hinweis: Vagrant 1.9.2 Box: ubuntu / trusty64, https://atlas.hashicorp.com/ubuntu/boxes/trusty64

EDIT- Befehle, die ich zum Installieren und Ausführen von Postgres verwendet habe:

  • sudo apt-get update
  • sudo apt-get install postgresql
  • sudo su postgres
  • psql -d postgres -U postgres
Saša Kalaba
quelle
1
Dies war die Antwort, die für mich funktioniert hat: askubuntu.com/a/824325/733901
Bruno Louvem Azeredo

Antworten:

155

Ich hatte das gleiche Problem im Zusammenhang mit der Konfiguration meiner Datei pg_hba.conf (in /etc/postgresql/9.6/main). Bitte beachten Sie, dass 9.6 die von mir verwendete Postgresql-Version ist.

Der Fehler selbst hängt mit einer Fehlkonfiguration von postgresql zusammen, die dazu führt, dass der Server vor dem Start abstürzt.

Ich würde vorschlagen, diese Anweisungen zu befolgen:

  1. Bestätigen Sie, dass der Postgresql-Dienst ausgeführt wird sudo service postgresql start
  2. Führen Sie pg_lsclustersvon Ihrem Terminal aus
  3. Überprüfen Sie, welchen Cluster Sie ausführen. Die Ausgabe sollte ungefähr so ​​aussehen:

    Version - Datenverzeichnis des Cluster-Portstatus-Besitzers

    9.6 ------- main - 5432 online postgres /var/lib/postgresql/9.6/main

    Ignorieren Sie die '---' Zeichen, da sie dort nur zur Ausrichtung verwendet werden. Die wichtigen Informationen sind die Version und der Cluster. Sie können auch in der Statusspalte überprüfen, ob der Server ausgeführt wird oder nicht.

  4. Kopieren Sie die Informationen aus der Version und dem Cluster und verwenden Sie sie wie folgt: pg_ctlcluster <version> <cluster> startIn meinem Fall wäre dies mit Version 9.6 und Cluster 'main' der Fallpg_ctlcluster 9.6 main start
  5. Wenn etwas nicht stimmt, generiert postgresql ein Protokoll, auf das zugegriffen /var/log/postgresql/postgresql-<version>-main.logwerden kann. In meinem Fall wäre dies der vollständige Befehl sudo nano /var/log/postgresql/postgresql-9.6-main.log.
  6. Die Ausgabe sollte den Fehler anzeigen.

    2017-07-13 16:53:04 BRT [32176-1] LOG: Ungültige Authentifizierungsmethode "all"
    2017-07-13 16:53:04 BRT [32176-2] KONTEXT: Zeile 90 der Konfigurationsdatei "/ etc. /postgresql/9.5/main/pg_hba.conf "
    2017-07-13 16:53:04 BRT [32176-3] FATAL: pg_hba.conf konnte nicht geladen werden

  7. Beheben sudo service postgresql restartSie die Fehler und starten Sie den Postgresql-Dienst neu, und es sollte in Ordnung sein.

Ich habe viel gesucht, um dies zu finden, Kredit geht an diesen Beitrag .

Viel Glück!

Malvadao
quelle
1
Ausgezeichnete Anleitung. Voller umfassender Erklärungen!
Salathiel Genèse
36

Ich hatte das gleiche Problem, aber keine der Antworten hier hat geholfen.

Wie ich es behoben habe (Mac)

  • Versuchen Sie, postgresql mit zu starten pg_ctl -D /usr/local/var/postgres start
  • Suchen Sie nach der Fehlermeldung , die so etwas wie sagt FATAL: could not open directory "pg_tblspc": No such file or directory.
  • Erstellen Sie das fehlende Verzeichnis mkdir /usr/local/var/postgres/pg_tblspc
  • Wiederholen Sie diesen Vorgang ab Schritt 1, bis Sie alle fehlenden Verzeichnisse erstellt haben
  • Wenn Sie fertig sind und dann wieder zu starten postgresql versuchen , es könnte sagenFATAL: lock file "postmaster.pid" already exists
  • Postmaster.pid löschen :rm /usr/local/var/postgres/postmaster.pid
  • Starten Sie postgres mit: pg_ctl -D /usr/local/var/postgres start
  • Fertig ✨
Martinlasek
quelle
13

Ich poste dies nur für alle, die sich verloren und hoffnungslos fühlen, wie ich es getan habe, als ich diese Frage gefunden habe. Es scheint, dass manchmal durch Bearbeiten einiger psotgresql-bezogener Konfigurationsdateien versehentlich die Berechtigungen der Datei geändert werden können:

Geben Sie hier die Bildbeschreibung ein

Beachten Sie, wie pg_hba.conf zu root gehört und Benutzer es nicht einmal lesen können. Dies führt dazu, dass postgres diese Datei nicht öffnen und daher den Server nicht starten kann, wodurch der in der ursprünglichen Frage angegebene Fehler ausgelöst wird.

Durch Laufen

sudo chmod +r pg_hba.conf

Ich konnte diese Datei wieder für den Benutzer von postgres und dann nach dem Ausführen zugänglich machen

sudo service postgresql start

Konnte den Server wieder zum Laufen bringen.

wfgeo
quelle
Ja, das war mein Problem, und darauf wurde in den Protokollen nicht hingewiesen (oder wenn es so war, habe ich es nicht verstanden).
EAmez
Nicht genau das, was mir passiert ist, aber aus irgendeinem Grund hat NETWORK SERVICE Schreibrechte für die gesamte Verzeichnisstruktur verloren. Diese Antwort wies mich in die richtige Richtung, daher die Gegenstimme.
Brad Mathews
5

Zeigt das an /etc/postgresql/9.6/main/postgresql.conf, dass der Port zugewiesen wurde? Bei meiner Standardinstallation von Xubuntu Linux zeigte meine aus irgendeinem Grund port = 5433 an, so gut ich mich erinnern kann, aber ich habe die Zeile in derselben Datei listen_addresses = 'localhost'auskommentiert, in der die Zeile angegeben und kommentiert wurde listen_addresses = '*'. Also vielleicht anfangen und dort nachsehen. Hoffentlich hilft das.

J2112O
quelle
4

Befehl verwenden:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8
Gaurav Verma
quelle
9
Entfernt dies nicht die gesamte Datenbank? Ich denke, dass ein Wort der Warnung angebracht wäre.
d33tah
1
Danke @Tucker Watts und @Gaurav Verma. Ich habe mein Problem gelöst, indem ich beide Lösungen ausprobiert und diesen Befehl hinzugefügt habe pg_ctl -D /usr/local/var/postgres -l logfile start.
Niyongabo
4

Das funktioniert bei mir:

pg_ctl -D /usr/local/var/postgresql@9.6 stop;
brew services stop postgresql@9.6;
brew services start postgresql@9.6;
MevlütÖzdemir
quelle
4

Diese beiden Schritte haben es für mich auf dem Mac gelöst:

rm /usr/local/var/postgres/postmaster.pid
brew services restart postgresql

BEARBEITEN:

Falls Sie mit diesem Problem konfrontiert sind (gemeldet von @uckyguy73): psql: FATAL: database "postgresql" does not exist

Du kannst rennen

brew postgresql-upgrade-database

etwas reparieren.

nicodp
quelle
danke mann, ich bin von einer nicht zu einer tödlichen Verbindung gegangen, indem ich deinen Anweisungen gefolgt bin: "psql: FATAL: Datenbank" postgresql "existiert nicht"
happyguy73
Huh komisch, das funktioniert immer bei mir. Hast du es geschafft, es zu lösen?
Nicodp
Keine Sorge, es hat sich tatsächlich als ok herausgestellt. Ich habe gerade 'Brew Postgresql-Upgrade-Datenbank' ausgeführt und das hat den Trick gemacht, danke
Luckyguy73
1
Ich bin froh, dass du es repariert hast! Wenn es Ihnen nichts ausmacht, füge ich das auch der Antwort hinzu, falls jemand anderes vor dem gleichen Problem steht. Danke
nicodp
3

Innerhalb von zsh:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

Dies ist das einzige, was nach unzähligen Stunden Fehlerbehebung für mich funktioniert hat.

Tucker Watts
quelle
2

Öffnen Sie Ihren Datenbankmanager und führen Sie dieses Skript aus

update pg_database set datallowconn = 'true' where datname = 'your_database_name';
Nasser Abdou
quelle
2

Mir ist dasselbe passiert, als ich etwas in der /etc/hostsDatei geändert hatte . Nachdem 127.0.0.1 localhostich es wieder geändert hatte, funktionierte es für mich.

Codierer
quelle
2

Installieren Sie einfach Ihre pgsql mit der direkten Version sudo apt-get install postgresql-9.5 neu (Sie müssen das Paket entfernen, bevor Sie eine neue installieren).

Vitaly Kholodov
quelle
2

In meinem Fall war es die Sperrdatei postmaster.id, die beim letzten Systemabsturz nicht ordnungsgemäß gelöscht wurde, die das Problem verursachte. Das Löschen mit sudo rm /usr/local/var/postgres/postmaster.pidund das Neustarten von Postgres lösten das Problem.

xji
quelle
1

Ich hatte den gleichen Fehler, als ich die SQL-Datenbank in einer VM erstellte. Ich hatte den Standardwert von /etc/postgresql/9.3/main/postgresql.conf shared_buffers = 200MBauf 75% meines gesamten Arbeitsspeichers geändert . Nun, ich habe vergessen, diesen RAM tatsächlich in der VM zuzuweisen. Als ich den Befehl zum Erstellen einer neuen Datenbank gab, erhielt ich den gleichen Fehler.

Ausgeschaltet, gab dem Baby seine Flasche (RAM) und Presto, es funktionierte.

ZENTURIO
quelle
1

Ich konnte das Problem lösen, indem ich Folgendes ausführte:

sudo systemctl start postgresql@9.5-main
Eugene Lem
quelle
1

Ich habe diesen Fehler erhalten, als ich meine Datenbank aus der letzten Sicherungsdatei pg_basebackup wiederhergestellt habe. Als ich danach versuchte, eine Datenbank (psql) zu verbinden, wurde der gleiche Fehler angezeigt. Der Fehler wurde behoben, als ich die Datei pg_hba.conf aktualisierte und überall dort, wo "Peer" -Authentifizierung vorhanden war, diese durch "md5" ersetzte und dann die postgres-Dienste neu startete. Danach wurde das Problem behoben.

Shiwangini
quelle
1

Ich hatte vor einiger Zeit ähnliche Probleme. Nachdem ich mehr als 5 Vorschläge ausprobiert hatte, beschloss ich, zu den Grundlagen zurückzukehren und von vorne zu beginnen. Was bedeutete, meine Postgresql-Installation zu entfernen und diese Anleitung bei der Neuinstallation von Postgresql zu befolgen. https://help.ubuntu.com/lts/serverguide/postgresql.html

Sylvery
quelle
1

Dieser Fehler ist mir passiert, nachdem mein Mac mini nicht angeschlossen war (also erzwungenes Herunterfahren) und alles, was ich tun musste, um ihn zu beheben, war ein Neustart

muceyMuce
quelle
1

Ich empfehle Ihnen, den Port zu klären, der postgres. In meinem Fall wusste ich nicht, auf welchem ​​Port Postgres lief.

lsof -i | grep 'post'

Dann können Sie wissen, welcher Port empfangsbereit ist.

psql -U postgres -p "port_in_use"

mit Port-Option könnte Antwort sein. Sie können psql verwenden.

horoyoi o
quelle
1

Ich habe gelegentlich das gleiche Problem, aber meistens nach MacOS-Upgrades. Das Herunterfahren und Migrieren auf die neue Version behebt dies normalerweise für mich (nehmen Sie Änderungen entsprechend Ihrer Version vor). Aktualisieren Sie also zuerst Ihr Postgresql

brew services stop postgresql@12
brew services start postgresql@12
brew postgresql-upgrade-database

Dies ist meistens eine vorübergehende Lösung, aber da ich keine bessere Lösung finden konnte, funktioniert dies für mich.

Nishith
quelle
Die Postgresql-Upgrade-Datenbank zu brauen hat endlich für mich funktioniert, nachdem ich alles andere ausprobiert hatte
happyguy73
0

Ich habe das gleiche Problem mit Postgres 11 auf meinem Mac. Ich erhalte diesen Fehler jedes Mal nach dem Neustart

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"?

Als vorübergehende Lösung mache ich

brew services stop postgresql@11
brew services start postgresql@11
iAbhinav
quelle
0

Wenn keine der oben genannten Antworten für Sie nicht funktioniert, versuchen Sie bitte diese,

Viele Leute haben viele Lösungen für dieses Problem erwähnt! Alle haben jedoch vergessen, dass das gleiche Problem auftritt, wenn auf Ihrer Festplatte nicht genügend Speicherplatz vorhanden ist oder der Ihnen zugewiesene Speicherplatz postgresvoll ist

Überprüfen Sie Ihren Systemspeicher, wenn er Speicherplatz frei macht! Starten Sie dann Ihre Postgres neu sudo service postgresql restartoder machen Sie einen Stopp und starten Sie sudo service posgresql stopdannsudo service postgresql start

Dies wird das Problem lösen, es wurde für mich gelöst

Sushin Pv
quelle