Einführung
Relationale Datenbankmanagementsysteme sind eine wichtige Komponente 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 fortgeschrittene Funktionen wie zuverlässige Transaktionen und Nebenläufigkeit ohne Lese-Sperrungen.
Diese Anleitung zeigt, wie man Postgres auf einem Ubuntu 22.04 Server installiert. Sie enthält auch einige Anweisungen zur allgemeinen Datenbankverwaltung.
Voraussetzungen
Um diesem Tutorial zu folgen, benötigen Sie einen Ubuntu 22.04 Server, der gemäß unserer Anleitung Initiale Servereinrichtung für Ubuntu 22.04 konfiguriert wurde. Nach Abschluss dieses Voraussetzungs-Tutorials sollte Ihr Server über einen nicht-root-Benutzer mit Sudo-Berechtigungen und eine grundlegende Firewall verfügen.
Schritt 1 — Installation von PostgreSQL
Die Standard-Repositories von Ubuntu enthalten PostgreSQL-Pakete, die Sie mithilfe des apt
-Paketierungssystems installieren können.
Wenn Sie dies nicht kürzlich getan haben, aktualisieren Sie den lokalen Paketindex Ihres Servers:
Dann installieren Sie das PostgreSQL-Paket zusammen mit einem -contrib
-Paket, das einige zusätzliche Dienstprogramme und Funktionen hinzufügt:
Stellen Sie sicher, dass der Server läuft, indem Sie den Befehl systemctl start
verwenden:
Jetzt, da die Software installiert und ausgeführt wird, können wir besprechen, 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 die Authentifizierung und Autorisierung zu handhaben. Diese sind in gewisser Weise ähnlich wie reguläre Unix-Benutzerkonten, aber Postgres unterscheidet nicht zwischen Benutzern und Gruppen und zieht stattdessen den flexibleren Begriff „Rolle“ vor.
Bei der Installation ist Postgres standardmäßig auf Peer-Authentifizierung eingestellt, 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 dem gleichen Namen als diese Rolle anmelden.
Im Installationsverfahren wurde ein Benutzerkonto namens postgres erstellt, das mit der Standard-Postgres-Rolle verknüpft ist. Um Postgres zu verwenden, können Sie sich bei diesem Konto anmelden.
Es gibt einige Möglichkeiten, dieses Konto zum Zugriff auf Postgres zu verwenden.
Wechseln zum postgres-Konto
Wechseln Sie auf Ihrem Server zum postgres-Konto, indem Sie Folgendes eingeben:
Sie können jetzt sofort auf die PostgreSQL-Eingabeaufforderung zugreifen, indem Sie Folgendes eingeben:
Von dort aus können Sie je nach Bedarf mit dem Datenbankverwaltungssystem interagieren.
Beenden Sie die PostgreSQL-Eingabeaufforderung, indem Sie Folgendes eingeben:
Dies bringt Sie zurück zur Befehlszeile des Linux-Benutzers postgres.
Zugriff auf eine Postgres-Eingabeaufforderung ohne Konto-Wechsel
Sie können auch den Befehl, den Sie möchten, direkt mit dem sudo
-Konto postgres ausführen.
Zum Beispiel wurden Sie im letzten Beispiel angewiesen, das Postgres-Prompt zu öffnen, indem Sie zunächst zum Benutzer postgres wechseln und dann psql
ausführen. Sie könnten dies in einem Schritt durchführen, indem Sie den einzelnen Befehl psql
als Benutzer postgres mit sudo
ausführen, wie folgt:
Dadurch werden Sie direkt in Postgres eingeloggt, ohne die Zwischen bash
-Shell dazwischen.
Erneut können Sie die interaktive Postgres-Sitzung verlassen, indem Sie Folgendes 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 die Rolle postgres in der Datenbank konfiguriert. Sie können neue Rollen von der Befehlszeile aus mit dem Befehl createuser
erstellen. Das Flag --interactive
fordert Sie auf, den Namen der neuen Rolle anzugeben und auch zu fragen, 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 lieber für jeden Befehl sudo
verwenden möchten, ohne von Ihrem normalen Konto zu wechseln, geben Sie ein:
Das Skript wird Sie mit einigen Auswahlmöglichkeiten auffordern und basierend auf Ihren Antworten die richtigen Postgres-Befehle ausführen, 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 die Manpage für den Befehl createuser
ansehen:
Ihre Installation von Postgres hat jetzt einen neuen Benutzer, aber Sie haben noch keine Datenbanken hinzugefügt. Der nächste Abschnitt beschreibt diesen Prozess.
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 über eine Datenbank mit demselben Namen verfügt, auf die sie zugreifen kann.
Dies bedeutet, dass wenn der Benutzer, den Sie im letzten Abschnitt erstellt haben, sammy heißt, diese Rolle standardmäßig versuchen wird, sich mit einer Datenbank namens „sammy“ zu verbinden. Sie können die entsprechende Datenbank mit dem Befehl createdb
erstellen.
Wenn Sie als Benutzer postgres angemeldet sind, würden Sie etwas wie folgt 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 einer Postgres-Eingabeaufforderung mit der neuen Rolle
Um sich mit Peer-Authentifizierung anzumelden, benötigen Sie einen Linux-Benutzer mit demselben Namen wie Ihre Postgres-Rolle und Datenbank.
Wenn Sie keinen passenden Linux-Benutzer haben, können Sie einen mit dem Befehl adduser
erstellen. Sie müssen dies von Ihrem nicht-root-Konto mit sudo
-Berechtigungen durchführen (das heißt, nicht als Benutzer postgres angemeldet sein):
Sobald dieses neue Konto verfügbar ist, können Sie entweder wechseln und eine Verbindung zur Datenbank herstellen, 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 angeben, indem Sie die Datenbank wie folgt angeben:
Nach der Anmeldung können Sie Ihre aktuellen Verbindungsinformationen abrufen, 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
Nun, 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)
);
Dieser Befehl gibt der Tabelle einen Namen und definiert dann die Spalten sowie den Spaltentyp und die maximale Länge der Felddaten. Optional können Sie für jede Spalte Einschränkungen hinzufügen.
Weitere Informationen zum Erstellen von Tabellen finden Sie in unserem Leitfaden „Wie man Tabellen in SQL erstellt und verwaltet“.
Zu Demonstrationszwecken erstellen Sie bitte die folgende Tabelle:
Dieser Befehl erstellt eine Tabelle, die Spielplatzgeräte inventarisiert. Die erste Spalte in der Tabelle enthält Ausrüstungs-ID-Nummern vom Typ serial
, was ein automatisch inkrementierender ganzer Wert 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 den Ausrüstungs-typ
und die Farbe
jeweils, von denen keine null sein kann. Die Zeile danach erstellt eine Ort
-Spalte mit einer Einschränkung, die verlangt, dass der Wert einer von acht möglichen Werten ist. Die letzte Zeile erstellt eine Datum
-Spalte, die das Datum aufzeichnet, an dem Sie die Ausrüstung installiert haben.
Für zwei der Spalten (equip_id
und install_date
) wird in dem Befehl keine Feldlänge angegeben. Der Grund dafür ist, dass einige Datentypen keine festgelegte Länge benötigen, weil die Länge oder das Format impliziert ist.
Untersuchen Sie Ihre neue Tabelle, 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)
Dein Spielplatz-Tisch 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 du deiner Spalte equip_id
gegeben hast. Dies hält den nächsten Wert in der Sequenz fest und wird automatisch für Spalten dieses Typs erstellt.
Wenn du die Tabelle ohne die Sequenz anzeigen möchtest, kannst du Folgendes eingeben:
Output List of relations
Schema | Name | Type | Owner
--------+------------+-------+-------
public | playground | table | sammy
(1 row)
Mit einer bereiten Tabelle können wir sie nun verwenden, um das Datenmanagement zu üben.
Schritt 7 — Daten hinzufügen, abfragen und löschen in einer Tabelle
Jetzt, da du eine Tabelle hast, kannst du einige Daten einfügen. Als Beispiel füge eine Rutsche und eine Schaukel hinzu, indem du die Tabelle aufrufst, zu der du hinzufügen möchtest, die Spalten benennst und dann Daten für jede Spalte angibst, wie folgt:
Beachte beim Eingeben der Daten, dass du einige häufige Fehler vermeidest. Wickel die Spaltennamen nicht in Anführungszeichen, aber die Werte, die du eingibst, müssen in Anführungszeichen stehen.
Eine weitere Sache, die du beachten solltest, ist, dass du keinen Wert für die Spalte equip_id
eingibst. Dies geschieht automatisch, wenn du eine neue Zeile zur Tabelle hinzufügst.
Rufe die Informationen ab, die du hinzugefügt hast, indem du Folgendes eingibst:
Output equip_id | type | color | location | install_date
----------+-------+--------+-----------+--------------
1 | slide | blue | south | 2017-04-28
2 | swing | yellow | northwest | 2018-08-16
(2 rows)
Beachte, dass deine equip_id
erfolgreich ausgefüllt wurde und dass alle deine anderen Daten korrekt organisiert wurden.
Wenn die Rutsche auf dem Spielplatz bricht und Sie sie entfernen müssen, können Sie auch die Zeile aus Ihrer Tabelle entfernen, indem Sie Folgendes eingeben:
Abfrage der Tabelle erneut:
Output equip_id | type | color | location | install_date
----------+-------+--------+-----------+--------------
2 | swing | yellow | northwest | 2018-08-16
(1 row)
Beachten Sie, dass die Zeile Rutsche
nicht mehr Teil der Tabelle ist.
Schritt 8 — Hinzufügen und Löschen von Spalten in einer Tabelle
Nachdem Sie eine Tabelle erstellt haben, können Sie sie durch Hinzufügen oder Entfernen von Spalten ändern. Fügen Sie eine Spalte hinzu, um den letzten Wartungsbesuch für jedes Gerät anzuzeigen, indem Sie Folgendes eingeben:
Sehen Sie sich Ihre Tabelleninformationen erneut an. Es wurde eine neue Spalte hinzugefügt, aber keine Daten wurden eingegeben:
Output equip_id | type | color | location | install_date | last_maint
----------+-------+--------+-----------+--------------+------------
2 | swing | yellow | northwest | 2018-08-16 |
(1 row)
Wenn Sie feststellen, dass Ihr Arbeitskommando ein separates Werkzeug zur Verfolgung des Wartungsverlaufs verwendet, können Sie die Spalte löschen, indem Sie Folgendes eingeben:
Dies löscht die Spalte last_maint
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 wie Sie sie löschen, aber in diesem Tutorial wurde noch nicht erklärt, wie bestehende Einträge geändert werden können.
Sie können die Werte eines vorhandenen Eintrags aktualisieren, indem Sie nach dem Datensatz suchen, den Sie möchten, und die Spalte auf den Wert setzen, den Sie verwenden möchten. Sie können nach dem swing
-Datensatz suchen (dies wird jeden Schaukel in Ihrer Tabelle finden) und dessen Farbe auf rot
ändern. Dies könnte nützlich sein, wenn Sie dem Schaukelset einen neuen Anstrich gegeben haben:
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)
Die Rutsche ist jetzt als rot registriert.
Fazit
Sie sind jetzt mit PostgreSQL auf Ihrem Ubuntu 22.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-22-04