Erstellen Sie eine Datenbank in PostgreSQL mit dem Befehl createdb

Erstellen Sie Eine Datenbank In Postgresql Mit Dem Befehl Createdb



In diesem Handbuch erfahren Sie, wie Sie mit dem Befehl createdb eine Datenbank in PostgreSQL erstellen.

Voraussetzungen:

Um die in diesem Handbuch gezeigten Schritte auszuführen, benötigen Sie die folgenden Komponenten:

  • Ein richtig konfiguriertes Linux-System. Zum Testen überlegen Einrichten einer virtuellen Ubuntu-Maschine mit VirtualBox .
  • Installiertes und konfiguriertes PostgreSQL. Lerne mehr über Installation von PostgreSQL auf Ubuntu .
  • Zugriff auf ein Nicht-Root-Benutzer mit sudo-Berechtigung .

PostgreSQL-Datenbanken

PostgreSQL ist ein kostenloses und Open-Source-SQL-kompatibles objektrelationales Datenbanksystem. Es kann sowohl mit relationalen (SQL) als auch mit nicht-relationalen (JSON) Abfragen arbeiten. Erfahren Sie mehr über die Funktionen von PostgreSQL .







In PostgreSQL sieht die Datenhierarchie wie folgt aus:



  • Cluster
  • Datenbank
  • Schema
  • Tabelle (oder andere Objekte; zum Beispiel Funktion)

Jede PostgreSQL-Instanz kann mehrere Clientverbindungen akzeptieren. Der Client muss den Datenbanknamen in der Verbindungsanforderung angeben. Es ist nur eine Datenbank pro Verbindung zulässig. Ein Client kann jedoch mehrere Verbindungen zum Server öffnen und sich gleichzeitig mit einer oder mehreren Datenbanken verbinden.



Erstellen einer Datenbank in PostgreSQL

1. Öffnen einer Verbindung zum Server

Um eine neue Datenbank zu erstellen, verbinden Sie sich zuerst mit dem PostgreSQL-Server:





$ sudo -ich -In postgr
$psql

Beachten Sie, dass die Datenbankerstellung ein eingeschränkter Vorgang ist. Nur Benutzer mit ausreichender Berechtigung dürfen die Aktion ausführen.



2. Auflisten der aktuellen Datenbanken
Führen Sie die folgende Abfrage in psql aus, um die Liste der Datenbanken auf dem Server zu drucken:

$ \Liste

Während der Installation erstellt PostgreSQL die erste Datenbank des Servers, die „postgres“ ist. Außerdem werden zwei zusätzliche Datenbanken erstellt:

  • Vorlage1 : Immer wenn eine neue Datenbank innerhalb des Clusters erstellt wird, wird „template1“ geklont.
  • Vorlage0 : Es dient als makellose Kopie des Originalinhalts von „template1“.

Erstellen Sie keine Objekte innerhalb von „template1“, es sei denn, Sie möchten, dass sie Teil jeder neu erstellten Datenbank sind. Wenn „template1“ geändert wird, kann „template0“ geklont werden, um eine neue Datenbank ohne standortlokale Ergänzungen zu erstellen.

3. Erstellen einer neuen Datenbank
Um eine neue Datenbank zu erstellen, führen Sie die folgende Abfrage in psql aus:

$ DATENBANK ERSTELLEN < Datenbankname > ;

Hier:

  • Die aktuelle Rolle wird automatisch als Besitzer der neuen Datenbank angenommen.
  • Der Eigentümer hat das Recht, den Eigentümer in eine andere Rolle zu ändern.

Überprüfen Sie die Liste der Datenbanken, ob die Aktion erfolgreich war, indem Sie den folgenden Befehl verwenden:

$ \Liste

Mit einem privilegierten Konto können wir mit dem folgenden Befehl auch eine Datenbank für jemand anderen erstellen:

$ DATENBANK ERSTELLEN < Datenbankname > EIGENTÜMER < Rolle > ;

Der Createdb-Befehl

Bei der vorherigen Methode mussten wir mehrere Schritte durchlaufen, um eine Datenbank zu erstellen:

  • Stellen Sie mit psql eine Verbindung zum PostgreSQL-Server her.
  • Führen Sie die Abfragen aus, um eine neue Datenbank zu erstellen.

Um den Prozess zu optimieren, enthält PostgreSQL den Befehl createdb. Es fungiert im Grunde als Wrapper für diese Aktionen. Wir können den createdb-Befehl direkt von der Shell ausführen.

1. Erstellen einer Datenbank mit Createdb
Um eine Datenbank mit dem Standarddatenbankserver zu erstellen, verwenden Sie den folgenden Befehl:

$ erstelltb < Datenbankname >

Überprüfen Sie die Aktion mit dem folgenden Befehl:

$ psql -C '\Liste'

Mit verschiedenen Optionen können wir auch die erstellten Operationen verfeinern. Sehen Sie sich das folgende Beispiel an:

$ erstelltb -H < Gastgeber > -P < Hafen > -T < Vorlage > -Es ist --Nutzername = < Nutzername > --Passwort --maintenance-db = < Wartungsdatenbankname > < Datenbankname >

Hier:

  • -H : Dieser Parameter gibt den Standort des PostgreSQL-Servers an (IP-Adresse oder Domänenname).
  • -P : Der Port für die Verbindung zum Server.
  • -T : Die beim Erstellen der neuen Datenbank zu verwendende Vorlage. Es kann sich um template0, template1 oder jede andere Datenbank handeln.
  • -Es ist : Gibt die entsprechende Abfrage zurück.
  • -Nutzername : Der Benutzername für die Verbindung zum Server.
  • -Passwort : Zwingt den createdb-Befehl zur Eingabe eines Passworts, bevor eine Verbindung zum Server hergestellt wird. In den meisten Fällen ist dies nicht erforderlich, da createdb automatisch zur Eingabe eines Kennworts auffordert, wenn der Server dies erfordert. Es verbringt jedoch einen Verbindungsversuch, um es herauszufinden.
  • –Wartungs-db : Die Datenbank, zu der eine Verbindung hergestellt werden soll, wenn die neue Datenbank erstellt wird. Wenn nicht angegeben, wird standardmäßig postgres angenommen. Wenn postgres nicht existiert, wird „template1“ angenommen.

Zeit, es in die Tat umzusetzen. Führen Sie den folgenden createdb-Befehl aus:

$ erstelltb -H lokaler Host -P 5432 -T Vorlage0 -Es ist --Nutzername =postgres test_db

Wie die Ausgabe vermuten lässt, entspricht dies der folgenden Abfrage:

$ DATENBANK ERSTELLEN test_db VORLAGE template0;

Zusätzliche Datenbankverwaltung

In diesem Abschnitt werfen wir einen Blick auf andere Datenbankverwaltungsoperationen.

Auflistung der Datenbanken

Es gibt mehrere Möglichkeiten, die auf dem Server gespeicherten Datenbanken aufzulisten. Eine Methode haben wir bereits in den vorherigen Abschnitten demonstriert:

$ \Liste

Eine andere Möglichkeit besteht darin, den Systemkatalog „pg_database“ zu untersuchen:

$ WÄHLEN Sie den Datennamen FROM pg_database;

Löschen einer Datenbank

Führen Sie zum Löschen einer Datenbank die folgende Abfrage aus:

$ DATENBANK LÖSCHEN < Datenbankname > ;

Ähnlich wie createdb enthält PostgreSQL auch den dropdb-Befehl, den wir von der Shell aus ausführen können. Schauen Sie sich das folgende Beispiel an:

$ dropdb -H < Gastgeber > -P < Hafen > --Nutzername = < Nutzername > --Passwort -Es ist < Datenbankname >

Hier:

  • -H : Der PostgreSQL-Server, zu dem eine Verbindung hergestellt werden soll.
  • -P : Der Port des PostgreSQL-Servers, zu dem eine Verbindung hergestellt werden soll.
  • -Es ist : Gibt die entsprechende Abfrage zurück.

Beachten Sie, dass der Benutzer über ausreichende Berechtigungen zum Löschen einer Datenbank verfügen muss.

Ändern eines Datenbankbesitzes

Der Eigentümer einer Datenbank kann jede Aktion für die Datenbank ausführen, einschließlich des Löschens der Datenbank. Standardmäßig wird der Benutzer, der die Datenbank erstellt, als Eigentümer zugewiesen. Wir können das Eigentum jedoch einem anderen Benutzer zuweisen.

Um den Eigentümer der Datenbank zu ändern, führen Sie die folgende Abfrage in psql aus:

$ DATENBANK ÄNDERN < Datenbankname > EIGENTÜMER ZU < neuer Besitzer > ;

Dies ändert jedoch nicht den Besitz der Objekte in der Datenbank (einschließlich Tabellen). In solchen Fällen müssen wir eine andere Abfrage verwenden. Stellen Sie eine Verbindung zur Zieldatenbank her und führen Sie die folgende Abfrage aus:

$ NEU ZUWEISEN BESITZEN VON < alter_besitzer > ZU < neuer Besitzer > ;

Diese Abfrage ist zwar praktisch, weist jedoch einige Einschränkungen auf:

  • Beim Herstellen einer Verbindung zu Postgres (Datenbank) kann es den Besitz mehrerer Datenbanken gleichzeitig ändern.
  • Verwenden Sie diese Abfrage nicht, wenn der ursprüngliche Eigentümer postgres ist, da dies die gesamte DB-Instance beschädigen könnte.

Bonus: Ausführen der Abfragen aus der Shell

Bisher führen wir die Abfragen von der PostgreSQL-Konsole aus. Was ist, wenn Sie einige Datenbankfunktionen in Ihre Skripte integrieren möchten? Die Befehle createdb und dropdb können nur bestimmte Operationen ausführen.

Um dies zu lösen, können wir psql als Conduit verwenden. Neben der standardmäßigen interaktiven Shell kann psql die Abfragen auch spontan ausführen.

Methode 1:

Die Befehlsstruktur ist wie folgt:

$ psql -H < Gastgeber > -P < Hafen > -IN < Nutzername > -D < Datenbank > -C < Anfrage >

Hier:

  • -H : Die Adresse des PostgreSQL-Servers.
  • -P : Der Port, zu dem eine Verbindung hergestellt werden soll (Standardwert ist 5432).
  • -IN : Der Benutzer, mit dem eine Verbindung hergestellt werden soll.
  • -D : Die Datenbank, zu der eine Verbindung hergestellt werden soll.
  • -C : Die auszuführende Abfrage.

Methode 2:

PostgreSQL verfügt über ein weiteres interessantes Feature: Verbindungs-URI. Es ist eine clevere Art, alle Verbindungsparameter sauber zu codieren. Die Struktur einer Verbindungs-URI ist wie folgt:

$ postgreSQL: //< Nutzername > : < Passwort >@< Gastgeber > : < Hafen >/< Datenbankname >

Hier:

  • postgresql oder postgr : Das eindeutige Protokoll für den PostgreSQL-Verbindungs-URI.

Verwenden Sie den folgenden psql-Befehl, um mithilfe des Verbindungs-URI eine Verbindung zu einer Datenbank herzustellen:

$ psql -D < connection_uri > -C < Anfrage >

Abschluss

Wir haben verschiedene Möglichkeiten zum Erstellen von Datenbanken in PostgreSQL kennengelernt. Wir haben gezeigt, wie Sie eine Datenbank mit der CREATE DATABASE-Abfrage erstellen. Wir haben auch die Datenbankerstellung mit dem Befehl createdb gezeigt. Darüber hinaus haben wir einige andere wichtige Datenbankverwaltungsaktionen wie das Löschen von Datenbanken und das Ändern des Eigentümers beschönigt.

Möchten Sie mehr über PostgreSQL erfahren? Besuche die PostgreSQL-Unterkategorie y, das zahlreiche Anleitungen zu verschiedenen Funktionen enthält; Zum Beispiel: Funktionen , Reguläre Ausdrücke , Tische , und vieles mehr.