Ich habe psql
eingegeben und erhalte folgendes:
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"?
Ich habe Sudo netstat -nlp | grep 5432
verwendet, um den Status zu sehen, aber es wurde nichts angezeigt. Und ich habe online gesucht, jemand hat mir gesagt, pg_hba.conf
zu ändern, aber ich kann diese Datei nicht locate
. Und ich habe auch diesen BefehlSudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
ausprobiert. Es kann nicht funktionieren.
Der Fehler gibt an, dass das Dienstprogramm psql den Socket für die Verbindung zum Datenbankserver nicht finden kann. Entweder läuft der Datenbankdienst nicht im Hintergrund oder der Socket befindet sich an einem anderen Ort oder der pg_hba.conf
muss möglicherweise behoben werden.
Der Befehl kann je nach Betriebssystem variieren. Auf den meisten * ix-Systemen würde jedoch Folgendes funktionieren: Es wird unter allen laufenden Prozessen nach Postgres gesucht
ps -ef | grep postgres
Auf meinem System, Mac OSX, spuckt dies aus
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
Die letzte Spalte zeigt den Befehl, der zum Starten des Servers verwendet wird, und die Optionen.
Sie können alle verfügbaren Optionen zum Starten des Postgres-Servers mithilfe der folgenden Optionen anzeigen.
man postgres
Von dort aus sehen Sie, dass die Optionen -D
und -r
jeweils die datadir
und die logfilename
sind.
Verwenden Sie find
, um nach dem Speicherort des Sockets zu suchen, der sich irgendwo im /tmp
befinden sollte.
Sudo find /tmp/ -name .s.PGSQL.5432
Wenn Postgres aktiv ist und Socket-Verbindungen akzeptiert, sollten Sie oben den Standort des Socket angeben. Auf meiner Maschine stellte sich heraus:
/tmp/.s.PGSQL.5432
Versuchen Sie dann, die Verbindung über psql explizit über die Position dieser Datei herzustellen, z.
psql -h /tmp/ dbname
Wenn Sie den Socket nicht finden, aber feststellen, dass der Dienst ausgeführt wird, überprüfen Sie, ob die Datei pg_hba.conf lokale Sockets zulässt.
Navigieren Sie zur datadir
und Sie sollten die pg_hba.conf
-Datei finden.
Am unteren Rand der Datei sollten standardmäßig folgende Zeilen angezeigt werden:
# "local" is for Unix domain socket connections only
local all all trust
Wenn Sie es nicht sehen, können Sie die Datei ändern und den Postgres-Dienst neu starten.
Wenn beim Starten des Postgres-Dienstes kein Fehler auftritt, führen Sie die folgenden Schritte aus
pg_lsclusters
ausführen, werden alle Postgres-Cluster aufgelistet, die auf Ihrem Gerät ausgeführt werdenz.B:
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
höchstwahrscheinlich ist der Status in Ihrem Fall- und Postgres-Dienst nicht verfügbar
#format is pg_ctlcluster <version> <cluster> <action>
Sudo pg_ctlcluster 9.6 main start
#restart postgres
Sudo service postgres restart
Wenn dieser Vorgang nicht erfolgreich ist, wird der Fehler ... ausgegeben. Mein Fehler war (Sie können das Fehlerprotokoll in /var/log/postgresql/postgresql-9.6-main.log
sehen)
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`
Stellen Sie sicher, dass postgres
der Besitzer von /var/lib/postgresql/version_no/main
eg ist: Sudo chown postgres -R /var/lib/postgresql/9.6/main/
Es passierte mir und es stellte sich heraus, dass ich den Postgres-Benutzer irrtümlich aus der Gruppe "ssl-cert" entfernt habe. Führen Sie den folgenden Code aus, um das Problem mit der Benutzergruppe und die Berechtigungen zu beheben
#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
Ich bin schon ein paar Mal auf ein ähnliches Problem gestoßen. Normalerweise mache ich einfach eine Neuinstallation von PostgreSQL nach diesem Tutorial und das löst das Problem auf Kosten von Datenverlust.
Ich war entschlossen, heute eine echte Lösung zu finden. Durch den Neustart von PostgreSQL wurde es auf Ubuntu behoben. Sudo /etc/init.d/postgresql restart
Ich habe es gelöst! Ich weiß zwar nicht, was passiert ist, aber ich habe einfach alles gelöscht und neu installiert. Dies ist der Befehl, mit dem ich Sudo apt-get --purge remove postgresql\*
und dpkg -l | grep postgres
gelöscht habe. Letzteres ist das Finden aller Pakete für den Fall, dass es nicht sauber ist.
Ich hatte die gleiche Ausgabe auf Devuan Ascii (vielleicht auch Debian?). Die Konfigurationsdatei /etc/postgresql/9.6/main/postgresql.conf
enthält eine Direktive unix_socket_directories
, die standardmäßig auf /var/run/postgresql
zeigt. Das Ändern in /tmp
, wo die meisten Clients standardmäßig aussehen, hat es für mich behoben.
Ich hatte das ähnliche Problem und das Problem lag in der Konfigurationsdatei pg_hba.conf. Ich hatte zuvor einige Änderungen vorgenommen, die dazu führten, dass der Server beim Versuch, ihn zu starten, ausfiel. Das Auskommentieren der zusätzlichen Ergänzungen löste das Problem.
Für mich und meine Freunde, die an einer Node.js-App (mit Postgres und Sequelize) arbeiten, mussten wir also
brew install postgresql
(einer von uns hat Postgres vermisst, einer von uns nicht, und dennoch bekamen wir die gleiche Fehlermeldung wie oben aufgeführt)
brew services start postgresql
**** (Homebrew verwenden, um Postgres zu starten)
createdb <name of database in config.json file>
node_modules/.bin/sequelize db:migrate
npm start
Ich möchte nur eine kleine Ergänzung hinzufügen: Wenn sich Ihre Instanz über ein Socket beschwert, können Sie auch unix_socket_directories
in der /data/postgresql.conf
-Datei überprüfen, die auf /tmp
eingestellt sein könnte, beispielsweise, wenn Sie eine Drittanbieter-Distribution verwendet haben. Sie können es in /var/run/postgresql
ändern und den Dienst neu starten. Dies erfordert möglicherweise auch die Erstellung eines postgresql
-Verzeichnisses bei /var/run
und subsys/postgresql-9.6
bei /var/lock
, falls diese noch nicht vorhanden sind (bei mir mit postgresql 9.6 gearbeitet).
Der Fehler bedeutet, dass der Postgres-Server nicht läuft. Versuchen Sie es zu starten:
Sudo systemctl start postgresql
Stellen Sie sicher, dass der Server beim Booten gestartet wird:
Sudo systemctl enable postgresql
kurzanleitung für Debian:
/etc/postgresql/10/main/postgresql.conf
mit listen_address bearbeiten */etc/postgresql/10/main/pg_hba.conf
und fügen Sie am Ende eine Zeile mit Host all all 0/0 md5
ein.postgres=# CREATE ROLE remoteuser LOGIN WITH PASSWORD 'foo'
Sudo /etc/init.d/postgresql restart
-Änderungen werden wirksam
login vom Kunden mit psql --Host=ipofserver --port=5432 --username=remoteuser --password --dbname=mydb
so können Sie über den psql-Client remote auf die Postgres-Datenbank auf dem Server zugreifen
Dies kann zum Beispiel irgendetwas verursachen. Mein Problem wurde für einen Tippfehler in Konfigurationsdateien verursacht . Einige Leute sagen, dass sie durch Zertifikatsdateien verursacht wurden, eine andere Gruppe sagt, dass sie durch nicht übereinstimmende lokale Variablen verursacht wurde.
Wenn Sie keine Lösung für Ihr Problem finden können, entfernen Sie Postgres und installieren Sie sie erneut. Dies ist die beste Lösung.
Während der Neuinstallation von Postgresql. Standardmäßig werden Benutzername und Kennwort als "Postgres" zugewiesen. Die Funktion dieses RDBMS besteht darin, dem neuen Benutzer eine Rolle hinzuzufügen und die Datenbank zu erstellen. Wenn Sie solche Fehler erhalten:
melden Sie sich als Standardbenutzername an:
root @ kalilinux: ~ # Sudo -i -u postgres
ype psql für interaktive Eingabeaufforderung
postgres @ kalilinux: ~ $ psql
Um die Eingabeaufforderung zu beenden, verwenden Sie
\ q
Neue Benutzerrolle erstellen
postgres @ kalilinux: ~ $ createuser --interactive
Jetzt befinden Sie sich in interacive psql Shell. Genießen. Vergessen Sie nicht, sich mit Ihrem Benutzernamen anzumelden und geben Sie psql für Shell ein.
Mein Problem mit dieser Fehlermeldung war in falschen Berechtigungen für Schlüssel- und Pem-Zertifikate, die ich manipuliert habe. Was mir sehr geholfen hat, war: /Var/log/postgresql/postgresql-9.5-main.log Wo sind alle Fehler.
Ich habe dieses Problem durch Überprüfen meines Dateisystems gelöst. Die Festplatte war vollständig belegt und die Datenbank konnte daher nicht gestartet werden
verbindungen auf Unix-Domain-Socket "/var/run/postgresql/.s.PGSQL.5432" ?
Ich habe eine Reihe von Fehlerbehebungsversuchen ausprobiert, bis ich die Festplattennutzung überprüft und festgestellt habe, dass sie voll ist.
df -h
cd /var/log/odoo/
cat /dev/null > odoo-server.log
reboot
Ich war mit demselben Problem konfrontiert
Sudo su - postgres
initdb --locale en_US.UTF-8 -D /var/lib/postgres/data
exit
Sudo systemctl start postgresql
Sudo systemctl status postgresql
Das hat bei mir funktioniert.
Ich hatte das gleiche problem Es scheint, dass es keinen Socket gibt, wenn es keinen Cluster gibt.
Die Standardclustererstellung schlug während der Installation fehl, da kein Standardgebietsschema festgelegt wurde.