Der PostgreSQL-Dienst initdb funktioniert nicht

7

Ich habe PostgreSQL 9.1.2 auf meinem Fedora 16 in einer ähnlichen Methode wie hier beschrieben installiert und getestet, was bedeutet, dass meine Installation einwandfrei funktioniert.

Aber wenn ich es tue: service postgresql initdboder sogar service postgresql-9.0 initdbich bekomme den Fehler:

Redirecting to /bin/systemctl  initdb postgresql.service
Unknown operation initdb

Aus diesem Grund kann ich pgAdmin3 auch nicht starten.

Was vermisse ich?

c0da
quelle

Antworten:

6

Auf Systemen , auf denen Postgres umgewandelt wurde eine native verwenden systemdSie Gerät verwenden müssen postgresql-setupwie für die Dinge initdb. Was Sie also wollen, ist:

postgresql-setup initdb
TomH
quelle
3
Und hier ist die Seite, die erklärt, warum.
James O'Gorman
1
Data directory not empty.<- Ich habe diesen Fehler ... :( Ich muss etwas schrecklich Falsches tun.
c0da
1
Ja, Sie haben bereits eine Datenbank und initdbweigern sich, diese zu überschreiben. Wenn Sie es ersetzen möchten, müssen Sie das alte von Hand löschen. Das Umbenennen ist jedoch wahrscheinlich sicherer, bis Sie wirklich sicher sind, dass Sie es entfernen möchten.
TomH
3

Führen Sie den Befehl "su - postgres -c ..." als root aus

Ich habe die Antwort hier gefunden: https://bugzilla.redhat.com/show_bug.cgi?id=771496

Beschreibung des Problems: Nach der Erstinstallation einer Postgresql-Server-RPM bleibt Ihnen ein nicht startbarer Dienst, bis Sie den folgenden Befehl als root ausführen

su - postgres -c "initdb -D / var / lib / pgsql / data"

Versionsnummer der ausgewählten Komponente (falls zutreffend):

[root @ oscar] # rpm -q postgresql-server postgresql-server-9.1.2-1.fc16.x86_64

Wie reproduzierbar: Immer

Hintergrundgeschichte

Mehrere Stellen hatten mich angewiesen, diesen Befehl für Fedora 16 zu verwenden, anstatt den vorherigen Anweisungen zu folgen (neuer Befehl: su - postgres -c "PGDATA = / var / lib / pgsql / data initdb"), aber nachdem ich 'su' bei gesehen hatte Vorne nahm ich an, dass es mich zu root wechseln würde, wenn ich den Befehl ausführte. Es forderte mich immer wieder zur Eingabe eines Passworts auf, aber nichts funktionierte.

Ich habe versucht, das Root-Passwd, mein eigenes (als ob sudo'ing), "postgres" und "pgsql", falls ich dies irgendwie als postgres-Benutzer tun sollte, und habe sogar das Passwort leer gelassen. Ich habe versucht, root zu werden und dann den Befehl ohne das anfängliche 'su -' auszuführen (beginnend mit "postgres -c ..."), aber das ist auch fehlerhaft und hat mir Folgendes gesagt:

"Der Server muss unter einer nicht privilegierten Benutzer-ID gestartet werden, um mögliche Kompromisse bei der Systemsicherheit zu vermeiden. Weitere Informationen zum ordnungsgemäßen Starten des Servers finden Sie in der Dokumentation."

Schließlich habe ich versucht, den vollständigen Befehl "su - postgres -c ..." als root auszuführen, aber immer noch "su" zu verwenden, und wow - es hat funktioniert. Jetzt startet der Dienst. Danke Redhat Bug Tracking!

Zusammenfassung

su to root, dann geben Sie ein:

su - postgres -c "PGDATA = / var / lib / pgsql / data initdb"

Dannid
quelle
2

Sie müssen den postgresql-Dienst mit dem folgenden Befehl starten:

service postgresql start

Das initdbTool sollte nur verwendet werden, wenn Sie das Datenverzeichnis des Datenbankservers initialisieren müssen. Dies sollte automatisch erfolgen, wenn Sie Ihren Postgresql-Server mit einem Paketmanager wie yumCentos oder apt-getUbuntu installieren .

Sie können es wie in dem von Ihnen angegebenen Link angegeben verwenden als:

initdb -D /usr/local/pgsql/data
Khaled
quelle
Ich habe mich als root angemeldet und : service postgresql start. Die Ausgabe war: Redirecting to /bin/systemctl start postgresql.service Job failed. See system logs and 'systemctl status' for details.Als ich das tat systemctl status, war die Ausgabe Too few arguments..
c0da
Haben Sie die Systemprotokolle wie in der Fehlermeldung angegeben überprüft?
Khaled
Welches Protokoll soll ich überprüfen? Es gibt eine Tonne von ihnen. :(
c0da
0

Dies antwortet etwas spät, kann aber für jemanden da draußen hilfreich sein ... Auf Fedora 18 musste ich mit postgresql 9.2 /usr/pgsql-9.2/bin zu meinem PATH in meiner Shell hinzufügen und von dort aus Ich musste rennen:

postgresql92-setup initdb

um die Konfigurationsdateien und all das in /var/lib/pgsql/9.2/data zum Laufen zu bringen. Hoffe, das ist hilfreich für jemand anderen da draußen!

Dmitri DB
quelle
Befehl nicht gefunden. 9.6 installiert
nerkn