pg_ctl: PID-Datei "/var/lib/postgres/data/postmaster.pid" konnte nicht geöffnet werden: Berechtigung verweigert

pg_ctl: PID-Datei "/var/lib/postgres/data/postmaster.pid" konnte nicht geöffnet werden: Berechtigung verweigert

Unter Arch Linux erhalte ich nach dem Ausführen des Befehls initdb die folgende Meldung:

Success. You can now start the database using:
    pg_ctl -D /var/lib/postgres/data -l logfile start

Als Postgres-Benutzer versuche ich, mit dem obigen Befehl zu beginnen und erhalte einen Fehler:

FATAL: could not create lock file "/run/postgresql/.s.PGSQL.5432.lock" no such file or directory

Ich beende den Vorgang und wechsele zum Postgres-Benutzer, versuche, mit dem obigen Befehl zu starten und erhalte:

pg_ctl: could not open PID file "/var/lib/postgres/data/postmaster.pid" : Permission denied

Dann versuche ich, den obigen Befehl als sudo auszuführen:

sudo pg_ctl -D /var/lib/postgres/data -l logfile start

und bekomme:

pg_ctl: cannot run as root.

Antwort1

Wenn Sie Postgres manuell starten, also ohne das gepackte Startskript zu verwenden, müssen Sie das tun, was das Skript tut:

  1. Erstellen Sie das /run/postgresqlVerzeichnis mit Schreibberechtigung für postgres und Leseberechtigung für andere. /runWird normalerweise auf einer RAM-Disk gemountet, daher ist es normal, dass es leer ist.

  2. Ausschließlich pg_ctlals Benutzer ausführen . Hierzu muss „ Use if“ verwendet werden.postgressudo -u postgressudo

Der erste von Ihnen erwähnte Fehler wird durch Nr. 1 und die beiden anderen durch Nr. 2 behoben. Oder verwenden Sie einfach das Startskript, das im Paket für Ihr Betriebssystem enthalten ist. Es kümmert sich um diese Details, sodass Sie sie nicht lernen müssen.

Der Arzt beihttps://wiki.archlinux.org/index.php/PostgreSQLsagt zu:

Endlich,StartUndaktivierender postgresql.service.

was bedeuten würde systemctl enable postgresql.serviceund systemctl start postgresql.service,im GegensatzZu pg_ctl [...options...] start.

Antwort2

Ich möchte hinzufügen, dass ich gerade ein ähnliches Problem mit Postgresql 10 unter Ubuntu hatte. Das could not open PID file “/var/lib/postgres/data/postmaster.pid”ist es, was mich hierher gebracht hat. Ich habe vergeblich Dinge ausprobiert, die ich hier und anderswo gelernt habe, und bin dann auf den uralten Neustart zurückgegriffen. Und alles hat gut geklappt. Na ja. Ich kann nicht sagen, dass ich viel gelernt habe oder dass es viel lehrt, außer: Denken Sie daran, einen Neustart zu versuchen ...

verwandte Informationen