Einführung
Relationale Datenbankmanagementsysteme sind eine Schlüsselkomponente vieler Websites und Anwendungen. Sie bieten eine strukturierte Möglichkeit, Informationen zu speichern, zu organisieren und darauf zuzugreifen.
PostgreSQL oder Postgres ist ein relationales Datenbankmanagementsystem, das eine Implementierung der SQL-Abfragesprache bietet. Es ist standardkonform und verfügt über viele erweiterte Funktionen wie zuverlässige Transaktionen und Nebenläufigkeit ohne Lese-Sperrvorgänge.
Dieser Leitfaden zeigt, wie Sie PostgreSQL auf einem Ubuntu 20.04-Server installieren. Er bietet auch Anweisungen für die allgemeine Datenbankverwaltung.
1-Klick-Bereitstellung einer PostgreSQL-Datenbank mit DigitalOcean Managed Databases. Lassen Sie DigitalOcean die Skalierung, Wartung und Upgrades für Ihre Datenbank übernehmen.
Voraussetzungen
Um diesem Tutorial zu folgen, benötigen Sie einen Ubuntu 20.04 Server, der gemäß unserer Anleitung zum Erstkonfiguration eines Servers für Ubuntu 20.04 eingerichtet wurde. Nach Abschluss dieses Voraussetzungen-Tutorials sollte Ihr Server über einen Nicht-Root-Benutzer mit Sudo-Berechtigungen und eine grundlegende Firewall verfügen.
Schritt 1 — Installation von PostgreSQL
Die Standardrepositorys von Ubuntu enthalten Postgres-Pakete, die Sie mithilfe des apt
-Paketsystems installieren können.
Wenn Sie dies nicht kürzlich getan haben, aktualisieren Sie den lokalen Paketindex Ihres Servers:
Anschließend installieren Sie das Postgres-Paket zusammen mit einem -contrib
-Paket, das einige zusätzliche Dienstprogramme und Funktionen hinzufügt:
Stellen Sie sicher, dass der Server mit dem Befehl systemctl start
gestartet wird:
Jetzt, da die Software installiert und ausgeführt wird, können wir erläutern, wie sie funktioniert und wie sie sich von anderen relationalen Datenbankverwaltungssystemen unterscheiden kann, die Sie möglicherweise verwendet haben.
Schritt 2 — Verwendung von PostgreSQL-Rollen und Datenbanken
Standardmäßig verwendet Postgres ein Konzept namens „Rollen“, um Authentifizierung und Autorisierung zu verwalten. Diese sind in gewisser Weise ähnlich wie reguläre Unix-ähnliche Konten, aber Postgres unterscheidet nicht zwischen Benutzern und Gruppen und bevorzugt stattdessen den flexibleren Begriff „Rolle“.
Bei der Installation ist Postgres so eingerichtet, dass es die Authentifizierung über „Peer-Authentifizierung“ verwendet, was bedeutet, dass es Postgres-Rollen mit einem entsprechenden Unix/Linux-Systemkonto verknüpft. Wenn eine Rolle in Postgres existiert, kann sich ein Unix/Linux-Benutzername mit demselben Namen als diese Rolle anmelden.
Der Installationsvorgang hat ein Benutzerkonto namens postgres erstellt, das mit der Standard-Postgres-Rolle verbunden ist. Um Postgres zu verwenden, können Sie sich bei diesem Konto anmelden.
Es gibt einige Möglichkeiten, dieses Konto zu verwenden, um auf Postgres zuzugreifen.
Wechseln zum postgres-Konto
Wechseln Sie auf Ihrem Server zum Konto postgres, indem Sie Folgendes eingeben:
Sie können nun sofort auf die PostgreSQL-Eingabeaufforderung zugreifen, indem Sie Folgendes eingeben:
Von dort aus können Sie nach Bedarf mit dem Datenbankverwaltungssystem interagieren.
Beenden Sie die PostgreSQL-Eingabeaufforderung, indem Sie Folgendes eingeben:
Dadurch gelangen Sie zurück zur Linux-Befehlszeile von postgres
.
Zugriff auf eine Postgres-Eingabeaufforderung ohne Kontenwechsel
Sie können auch das gewünschte Befehl direkt mit dem Konto postgres direkt mit sudo
ausführen.
Zum Beispiel wurden Sie im letzten Beispiel angewiesen, zur Postgres-Eingabeaufforderung zu gelangen, indem Sie zunächst zum Benutzer postgres wechseln und dann psql
ausführen, um die Postgres-Eingabeaufforderung zu öffnen. Sie könnten dies in einem Schritt ausführen, indem Sie den einzelnen Befehl psql
als Benutzer postgres mit sudo
ausführen, so:
Dadurch werden Sie direkt bei Postgres angemeldet, ohne die Zwischenstufe bash
-Shell dazwischen zu haben.
Erneut können Sie die interaktive Postgres-Sitzung verlassen, indem Sie eingeben:
Viele Anwendungsfälle erfordern mehr als eine Postgres-Rolle. Lesen Sie weiter, um zu erfahren, wie Sie diese konfigurieren können.
Schritt 3 — Erstellen einer neuen Rolle
Derzeit ist nur die postgres-Rolle in der Datenbank konfiguriert. Sie können neue Rollen über die Befehlszeile mit dem createrole
-Befehl erstellen. Das --interactive
-Flag fordert Sie auf, den Namen der neuen Rolle einzugeben und fragt auch, ob sie Superuser-Berechtigungen haben soll.
Wenn Sie als Benutzer postgres angemeldet sind, können Sie einen neuen Benutzer erstellen, indem Sie Folgendes eingeben:
Wenn Sie stattdessen bevorzugen, für jeden Befehl sudo
zu verwenden, ohne von Ihrem normalen Konto zu wechseln, geben Sie Folgendes ein:
Das Skript fordert Sie mit einigen Auswahlmöglichkeiten auf und führt aufgrund Ihrer Antworten die richtigen Postgres-Befehle aus, um einen Benutzer nach Ihren Spezifikationen zu erstellen.
OutputEnter name of role to add: sammy
Shall the new role be a superuser? (y/n) y
Sie können mehr Kontrolle erhalten, indem Sie einige zusätzliche Flags übergeben. Überprüfen Sie die Optionen, indem Sie sich die man
-Seite ansehen:
Ihre Postgres-Installation hat jetzt einen neuen Benutzer, aber Sie haben noch keine Datenbanken hinzugefügt. Der nächste Abschnitt beschreibt diesen Vorgang.
Schritt 4 – Erstellen einer neuen Datenbank
Eine weitere Annahme, die das Postgres-Authentifizierungssystem standardmäßig macht, ist, dass für jede Rolle, die sich anmeldet, diese Rolle eine Datenbank mit demselben Namen hat, auf die sie zugreifen kann.
Dies bedeutet, dass wenn der Benutzer, den Sie im letzten Abschnitt erstellt haben, sammy genannt wird, diese Rolle versuchen wird, eine Verbindung zu einer Datenbank herzustellen, die standardmäßig ebenfalls „sammy“ genannt wird. Sie können die entsprechende Datenbank mit dem createdb
-Befehl erstellen.
Wenn Sie als das postgres-Konto angemeldet sind, würden Sie etwas Ähnliches eingeben:
Wenn Sie stattdessen bevorzugen, für jeden Befehl sudo
zu verwenden, ohne von Ihrem normalen Konto zu wechseln, würden Sie Folgendes eingeben:
Diese Flexibilität bietet mehrere Möglichkeiten zum Erstellen von Datenbanken bei Bedarf.
Schritt 5 — Öffnen eines Postgres-Prompts mit der neuen Rolle
Um sich mit der Peer-Authentifizierung anzumelden, benötigen Sie einen Linux-Benutzer mit demselben Namen wie Ihre Postgres-Rolle und Datenbank.
Wenn Sie keinen übereinstimmenden Linux-Benutzer haben, können Sie einen mit dem adduser
-Befehl erstellen. Sie müssen dies von Ihrem nicht-root-Konto mit sudo
-Berechtigungen durchführen (d. h. nicht als der postgres-Benutzer angemeldet):
Sobald dieses neue Konto verfügbar ist, können Sie entweder wechseln und sich mit der Datenbank verbinden, indem Sie Folgendes eingeben:
Oder Sie können dies inline tun:
Dieser Befehl meldet Sie automatisch an, vorausgesetzt, dass alle Komponenten ordnungsgemäß konfiguriert wurden.
Wenn Sie möchten, dass Ihr Benutzer eine Verbindung zu einer anderen Datenbank herstellt, können Sie dies tun, indem Sie die Datenbank wie folgt angeben:
Nach dem Einloggen können Sie Ihre aktuellen Verbindungsinformationen überprüfen, indem Sie Folgendes eingeben:
OutputYou are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".
Dies ist nützlich, wenn Sie eine Verbindung zu nicht standardmäßigen Datenbanken oder mit nicht standardmäßigen Benutzern herstellen.
Schritt 6 — Tabellen erstellen und löschen
Jetzt, da Sie wissen, wie Sie sich mit dem PostgreSQL-Datenbanksystem verbinden können, können Sie einige grundlegende Postgres-Verwaltungsaufgaben erlernen.
Die grundlegende Syntax zum Erstellen von Tabellen lautet wie folgt:
CREATE TABLE table_name (
column_name1 col_type (field_length) column_constraints,
column_name2 col_type (field_length),
column_name3 col_type (field_length)
);
Wie Sie sehen können, geben diese Befehle der Tabelle einen Namen und definieren dann die Spalten sowie den Spaltentyp und die maximale Länge der Felddaten. Sie können auch optional für jede Spalte Tabellenbeschränkungen hinzufügen.
Weitere Informationen zum Erstellen und Verwalten von Tabellen in Postgres finden Sie hier.
Zu Demonstrationszwecken erstellen Sie die folgende Tabelle:
Dieser Befehl erstellt eine Tabelle, die Spielplatzgeräte inventarisiert. Die erste Spalte in der Tabelle wird Ausrüstungs-ID-Nummern vom Typ serial
enthalten, was eine automatisch inkrementierende Ganzzahl ist. Diese Spalte hat auch die Einschränkung PRIMARY KEY
, was bedeutet, dass die Werte darin eindeutig und nicht null sein müssen.
Die nächsten zwei Zeilen erstellen Spalten für die Ausrüstungsart type
und color
jeweils, von denen keine leer sein kann. Die Zeile danach erstellt eine location
-Spalte sowie eine Einschränkung, die den Wert auf eine von acht möglichen Werten festlegt. Die letzte Zeile erstellt eine date
-Spalte, die das Datum aufzeichnet, an dem die Ausrüstung installiert wurde.
Für zwei der Spalten (equip_id
und install_date
) wird keine Feldlänge angegeben. Der Grund dafür ist, dass einige Datentypen keine festgelegte Länge erfordern, da die Länge oder das Format impliziert sind.
Sie können Ihre neue Tabelle anzeigen, indem Sie Folgendes eingeben:
Output List of relations
Schema | Name | Type | Owner
--------+-------------------------+----------+-------
public | playground | table | sammy
public | playground_equip_id_seq | sequence | sammy
(2 rows)
Ihre Spielplatztabelle ist hier, aber es gibt auch etwas namens playground_equip_id_seq
, das vom Typ sequence
ist. Dies ist eine Darstellung des Typs serial
, den Sie Ihrer equip_id
-Spalte gegeben haben. Dies hält den nächsten Wert in der Sequenz fest und wird automatisch für Spalten dieses Typs erstellt.
Wenn Sie nur die Tabelle ohne die Sequenz sehen möchten, können Sie Folgendes eingeben:
Output List of relations
Schema | Name | Type | Owner
--------+------------+-------+-------
public | playground | table | sammy
(1 row)
Mit einer Tabelle bereit, können wir sie verwenden, um das Datenmanagement zu üben.
Schritt 7 — Hinzufügen, Abfragen und Löschen von Daten in einer Tabelle
Nun, da Sie eine Tabelle haben, können Sie einige Daten darin eingeben. Als Beispiel fügen Sie eine Rutsche und eine Schaukel hinzu, indem Sie die Tabelle aufrufen, die Sie hinzufügen möchten, die Spalten benennen und dann Daten für jede Spalte bereitstellen, so:
Sie sollten darauf achten, beim Eingeben der Daten einige häufige Fehler zu vermeiden. Wickeln Sie die Spaltennamen nicht in Anführungszeichen, aber die Spaltenwerte, die Sie eingeben, müssen in Anführungszeichen stehen.
Eine weitere Sache, die Sie im Auge behalten sollten, ist, dass Sie keinen Wert für die equip_id
-Spalte eingeben. Dies liegt daran, dass diese automatisch generiert wird, wenn Sie eine neue Zeile zur Tabelle hinzufügen.
Rufen Sie die Informationen ab, die Sie hinzugefügt haben, indem Sie Folgendes eingeben:
Output equip_id | type | color | location | install_date
----------+-------+--------+-----------+--------------
1 | slide | blue | south | 2017-04-28
2 | swing | yellow | northwest | 2018-08-16
(2 rows)
Hier sehen Sie, dass Ihre equip_id
erfolgreich ausgefüllt wurde und dass alle anderen Daten richtig organisiert wurden.
Wenn die Rutsche auf dem Spielplatz kaputt geht und Sie sie entfernen müssen, können Sie auch die Zeile aus Ihrer Tabelle entfernen, indem Sie Folgendes eingeben:
Abfragen Sie die Tabelle erneut:
Output equip_id | type | color | location | install_date
----------+-------+--------+-----------+--------------
2 | swing | yellow | northwest | 2018-08-16
(1 row)
Beachten Sie, dass die Zeile slide
nicht mehr Teil der Tabelle ist.
Schritt 8 — Hinzufügen und Löschen von Spalten aus einer Tabelle
Nachdem Sie eine Tabelle erstellt haben, können Sie sie ändern, indem Sie Spalten hinzufügen oder entfernen. Fügen Sie eine Spalte hinzu, um den letzten Wartungsbesuch für jedes Gerät anzuzeigen, indem Sie Folgendes eingeben:
Wenn Sie Ihre Tabelleninformationen erneut anzeigen, werden Sie feststellen, dass die neue Spalte hinzugefügt wurde, aber keine Daten eingegeben wurden:
Output equip_id | type | color | location | install_date | last_maint
----------+-------+--------+-----------+--------------+------------
2 | swing | yellow | northwest | 2018-08-16 |
(1 row)
Wenn Sie feststellen, dass Ihr Arbeitskollektiv ein separates Werkzeug verwendet, um die Wartungshistorie zu verfolgen, können Sie die Spalte löschen, indem Sie Folgendes eingeben:
Dies löscht die last_maint
-Spalte und alle darin gefundenen Werte, lässt jedoch alle anderen Daten intakt.
Schritt 9 – Aktualisieren von Daten in einer Tabelle
Bisher haben Sie gelernt, wie Sie Datensätze zu einer Tabelle hinzufügen und sie löschen können, aber in diesem Tutorial wurde noch nicht erläutert, wie vorhandene Einträge geändert werden können.
Sie können die Werte eines vorhandenen Eintrags aktualisieren, indem Sie den Datensatz abfragen, den Sie möchten, und die Spalte auf den Wert setzen, den Sie verwenden möchten. Sie können den swing
-Datensatz abfragen (dies entspricht jedem Schaukel in Ihrer Tabelle) und dessen Farbe auf rot
ändern. Dies könnte nützlich sein, wenn Sie der Schaukel eine neue Farbe geben:
Sie können überprüfen, ob die Operation erfolgreich war, indem Sie die Daten erneut abfragen:
Output equip_id | type | color | location | install_date
----------+-------+-------+-----------+--------------
2 | swing | red | northwest | 2018-08-16
(1 row)
Wie Sie sehen können, ist die Rutsche jetzt als rot registriert.
Abschluss
Sie sind nun mit PostgreSQL auf Ihrem Ubuntu 20.04-Server eingerichtet. Wenn Sie mehr über Postgres und dessen Verwendung erfahren möchten, empfehlen wir Ihnen, die folgenden Anleitungen zu lesen:
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-20-04