Der initdb-Befehl in PostgreSQL

Bilal Shahid 20 Juni 2023
  1. den initdb-Befehl in PostgreSQL
  2. Verwendung des initdb-Befehls in PostgreSQL
Der initdb-Befehl in PostgreSQL

Der Benutzer kann den PostgreSQL-Server mit verschiedenen Befehlen manuell einrichten. Zunächst müssten Sie einen Datenbankcluster einrichten, der im gesamten Artikel erläutert wurde.

Einer der wichtigsten BASH-Befehle im Initialisierungsprozess ist der Befehl initdb. Daher legt dieser Artikel besonderen Wert auf das Verständnis des Befehls initdb.

Es ist wichtig, den Befehl initdb zu verstehen, bevor Sie PostgreSQL manuell einrichten. Wenn PostgreSQL in der Anfangsphase nicht korrekt eingerichtet ist, führt es in der späteren Phase keine Abfragen aus.

Im schlimmsten Fall ist der PostgreSQL-Server möglicherweise nicht in der Lage, den Datenverzeichnispfad zu erkennen und kann nicht gestartet werden. Daher erklärt dieser Artikel den Befehl initdb und etwas mehr Details zum Datenbank-Cluster.

den initdb-Befehl in PostgreSQL

Der Befehl initdb wird im Initialisierungsprozess eines Datenbank-Clusters verwendet. Nach dem Initialisierungsprozess mit dem Befehl initdb wird innerhalb des Datenbank-Clusters eine Datenbank namens postgres erstellt.

Das postgres fungiert als Standarddatenbank, die von Benutzern, Dienstprogrammen und Anwendungen von Drittanbietern verwendet wird. Zusätzlich zur Erstellung der postgres-Datenbank innerhalb des Clusters wird auch eine weitere Datenbank namens template1 innerhalb jedes Clusters erstellt.

Die Datenbank template1 dient als Vorlage für später im Cluster erstellte Datenbanken. Denken Sie daran, dass ein Datenbank-Cluster das Datenverzeichnis unter Dateisystemen ist.

Der Datenbank-Cluster ist ein einzelnes Verzeichnis, in dem alle Daten gespeichert werden. Daher nimmt der Befehl initdb einen Ort als Argument, an dem er den Datenbankcluster initialisiert.

Als Argument für den Datenbank-Cluster kann ein beliebiger Standort angegeben werden. Die Daten werden an dem gewünschten Ort gespeichert, der mit dem Befehl initdb angegeben wird.

Eine -D-Option wird mit dem initdb-Befehl verwendet, um den gewünschten Speicherort für den Datenbank-Cluster festzulegen. Daher muss der Standort des Datenbank-Clusters sorgfältig ausgewählt werden.

Verwendung des initdb-Befehls in PostgreSQL

Die Definition des Befehls initdb wurde im obigen Abschnitt erläutert. Neben der Beschreibung wurde die Arbeit hinter dem Befehl im vorigen Abschnitt ausführlich beschrieben.

Dieser Abschnitt behandelt die Ausführung des Befehls initdb ausführlich. Stellen Sie zunächst sicher, dass Sie beim PostgreSQL-Benutzerkonto angemeldet sind, bevor Sie den Befehl initdb ausführen.

Der Befehl initdb funktioniert wie folgt:

> initdb -D /usr/local/pgsql/data

Das pg_ctl wird verwendet, um den Server zu starten oder zu stoppen. Wir können es auch verwenden, um den Befehl initdb auszuführen, wie unten gezeigt:

> pg_ctl -D /usr/local/pgsql/data initdb

Der Befehl initdb initialisiert das Standardgebietsschema für den Datenbankcluster. Darüber hinaus gibt der Befehl initdb auch die lokalen Umgebungseinstellungen und die Standardzeichensatzcodierung an.

Der Benutzer kann jedoch auch ein anderes Gebietsschema angeben. Der Befehl initdb erstellt ein Verzeichnis am angegebenen Ort, schlägt jedoch fehl, wenn:

  • Es hat keine Berechtigung, in das übergeordnete Verzeichnis zu schreiben.
  • Das Datenverzeichnis existiert bereits an diesem Ort.

Es wird bevorzugt, dass der PostgreSQL-Benutzer zusätzlich zum Datenverzeichnis das übergeordnete Verzeichnis besitzt. Wenn das übergeordnete Verzeichnis jedoch nicht vorhanden ist, sollte es vom Benutzer erstellt werden.

Wenn das Verzeichnis der Großeltern nicht beschreibbar ist, können wir das Root-Recht verwenden, um das übergeordnete und das untergeordnete Verzeichnis innerhalb des Verzeichnisses der Großeltern zu erstellen. Wir können die folgenden Befehle verwenden:

> root# mkdir /usr/local/pgsql
> root# chown postgres /usr/local/pgsql
> root# su postgres
> postgres$ initdb -D /usr/local/pgsql/data

Stellen Sie den autorisierten Zugriff auf den Datenbank-Cluster sicher

Der Befehl initdb verwendet beim Initialisieren und Erstellen des Datenbank-Clusters die standardmäßige Client-Authentifizierungseinrichtung. Dann ermöglicht es allen lokalen Benutzern, sich mit der Datenbank zu verbinden.

Die lokalen Benutzer können auch Superuser der Datenbank werden. Es ist ideal, ein Kennwort für den Datenbank-Superuser festzulegen, um unbefugten Zugriff auf eine Datenbank zu verhindern.

Dies kann mit einem der folgenden Befehle erfolgen:

  • Der Befehl initdb mit der Erweiterung -W
  • Der Befehl --pwprompt
  • Der Befehl pwfile

Wir können die obigen Befehle verwenden, um ein Passwort für die Datenbank festzulegen. Es erlaubt nur autorisierten Benutzern den Zugriff auf die Datenbank.

Fehler beim Initialisieren von Abhängigkeiten

Wenn bei der Initialisierung ein Abhängigkeitsfehler auftritt, wie z. B. Bus Error oder Exit Code 135 Error, initialisieren Sie den Datenbankcluster mit dem unten beschriebenen Verfahren.

Sobald der PostgreSQL-Server und die Client-Tools installiert wurden, muss der Benutzer die folgenden Befehle als ROOT(su) ausführen. Beginnen Sie mit dem Befehl service postgresql initdb.

Es initialisiert die PostgreSQL-Datenbank. Die folgenden Befehle stellen sicher, dass der PostgreSQL-Server korrekt läuft:

> service postgresql initdb
> systemctl enable postgresql
> systemctl start postgresql

Die Befehle initialisieren die PostgreSQL-Datenbank. Aber zuerst müssen wir überprüfen, ob der PostgreSQL-Server im Verzeichnis /var/lib/pgsql liegt.

Stellen Sie außerdem sicher, dass der PostgreSQL-Server ausgeführt wird. Der Befehl ps -ef | grep postgres kann verwendet werden, um den Betriebszustand des PostgreSQL-Servers zu überprüfen.

Wenn die Fehler nicht behoben werden, versuchen Sie die folgenden Methoden:

  • Wir sollten die leeren Installationsverzeichnisse data entfernen.
  • Alle Logfiles sollten genau ausgelesen werden.
  • Wir können den Benutzer oder das Passwort des PostgreSQL-Servers ändern.
  • Wir können das Datenverzeichnis des PostgreSQL-Servers bereinigen.

Denken Sie daran, dass der Befehl initdb im PostgreSQL-Server den Datenbank-Cluster initialisiert und an den gewünschten Ort des Benutzers setzt. Die Datenbank wird mit den lokalen Umgebungseinstellungen initialisiert und kann auf Benutzeranfrage geändert werden.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub