Wenn Ihr Postgres-Dienst fehlerfrei ausgeführt wird oder beim Starten des Postgres-Dienstes kein Fehler auftritt und Sie immer noch den genannten Fehler erhalten, befolgen Sie diese Schritte
Schritt 1:Ausführen von pg_lsclusters
listet alle Postgres-Cluster auf, die auf Ihrem Gerät ausgeführt werden
zB:
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 wird der Status in Ihrem Fall down sein. Versuchen Sie, Postgres-Cluster und -Dienste neu zu starten
Schritt 2:pg_ctlcluster neu starten
#format is pg_ctlcluster <version> <cluster> <action>
sudo pg_ctlcluster 9.6 main start
#restart postgresql service
sudo service postgresql restart
Schritt 3:Schritt 2 ist fehlgeschlagen und hat einen Fehler ausgelöst
Wenn dieser Vorgang nicht erfolgreich ist, wird der Fehler ausgegeben. Mein Fehler war (Sie können das Fehlerprotokoll unter /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`
Schritt 4:Besitz von Postgres prüfen
Stellen Sie sicher, dass postgres
ist der Eigentümer von /var/lib/postgresql/version_no/main
zB:sudo chown postgres -R /var/lib/postgresql/9.6/main/
Schritt 5:Überprüfen Sie, ob der Postgres-Benutzer zur ssl-cert-Benutzergruppe gehört
Es ist mir passiert und es stellte sich heraus, dass ich den Postgres-Benutzer fälschlicherweise 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
sudo service postgresql restart
Sie haben wahrscheinlich mehrere PostgreSQL-Versionen installiert. Wenn dies der Fall ist, ist die andere Version wahrscheinlich standardmäßig auf unix_socket_directories = '/tmp/'
eingestellt aber die libpq
Ihr psql
ist mit vermutlich standardmäßig /var/run/postgresql/
verknüpft .
Versuchen Sie es
psql -h /tmp
Wenn das funktioniert, ist das oben genannte Problem. Sie können export PGHOST=/tmp
hinzufügen zu Ihrem .bashrc
um die Standardeinstellung lokal für Ihren Benutzer zu ändern.
Wenn das nicht ist sicherstellen, dass PostgreSQL tatsächlich ausgeführt wird
ps aux |grep postgres
und wenn nicht, starte es. Wie, hängt davon ab, wie Sie es installiert haben, aber es geht über service
oder systemctl
Befehl(e), wenn Sie mit Paketen installiert haben.
psql:Verbindung zum Server konnte nicht hergestellt werden:Keine solche Datei oder Verzeichnis Läuft der Server lokal und akzeptiert Verbindungen auf dem Unix-Domain-Socket "/var/run/postgresql/.s.PGSQL.5432"?
Dieser Fehler bedeutet im Allgemeinen, dass der Server nicht ausgeführt wird. Basierend auf dpkg -l
Ausgabe und dem Thread von Kommentaren lag es am postgresql-9.5
Hauptpaket irgendwie deinstalliert. Da die Deinstallation nicht mit dem --purge
aufgerufen wurde Option zu dpkg
, die Daten und Konfigurationsdateien sind noch da, also apt-get install postgresql-9.5
kann das Problem beheben.