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.
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