GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie greife ich auf Postgres zu, wenn ich eine Fehlermeldung zu /var/run/postgresql/.s.PGSQL.5432 erhalte?

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.


Linux
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. Wie portabel sind /dev/stdin, /dev/stdout und /dev/stderr?

  3. Debian – /var, /home auf separate Partition verschieben?

  4. Kubuntu zeigt Fehler beim Login (file:///usr/share/sddm//themes/breeze/main.qml:no Such File or Directory)?

  5. So bereinigt systemd-tmpfiles /tmp/ oder /var/tmp (Ersatz von tmpwatch) in CentOS / RHEL 7

Ubuntu 14.04 „erhielt keinen Wiedergabe-URI bei der Eingabedatei:///*“?

Wie erhalte ich den Pfad eines Prozesses in Unix / Linux

Installieren Sie Binärdateien in /bin, /sbin, /usr/bin und /usr/sbin, Interaktionen mit --prefix und DESTDIR

Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

Wie finde ich heraus, aus welchem ​​Ordner ein Prozess läuft?

Sollten Websites gemäß der empfohlenen Verwendung in /var/ oder /usr/ leben?