Wie man PostgreSQL auf Ubuntu 22.04 installiert und verwendet

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:

  1. sudo apt update

Dann installieren Sie das PostgreSQL-Paket zusammen mit einem -contrib-Paket, das einige zusätzliche Dienstprogramme und Funktionen hinzufügt:

  1. sudo apt install postgresql postgresql-contrib

Stellen Sie sicher, dass der Server läuft, indem Sie den Befehl systemctl start verwenden:

  1. sudo systemctl start postgresql.service

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:

  1. sudo -i -u postgres

Sie können jetzt sofort auf die PostgreSQL-Eingabeaufforderung zugreifen, indem Sie Folgendes eingeben:

  1. psql

Von dort aus können Sie je nach Bedarf mit dem Datenbankverwaltungssystem interagieren.

Beenden Sie die PostgreSQL-Eingabeaufforderung, indem Sie Folgendes eingeben:

  1. \q

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:

  1. sudo -u postgres psql

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:

  1. \q

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:

  1. createuser --interactive

Wenn Sie stattdessen lieber für jeden Befehl sudo verwenden möchten, ohne von Ihrem normalen Konto zu wechseln, geben Sie ein:

  1. sudo -u postgres createuser --interactive

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.

Output
Enter 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:

  1. man createuser

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:

  1. createdb sammy

Wenn Sie stattdessen bevorzugen, für jeden Befehl sudo zu verwenden, ohne von Ihrem normalen Konto zu wechseln, würden Sie Folgendes eingeben:

  1. sudo -u postgres createdb sammy

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):

  1. sudo adduser sammy

Sobald dieses neue Konto verfügbar ist, können Sie entweder wechseln und eine Verbindung zur Datenbank herstellen, indem Sie Folgendes eingeben:

  1. sudo -i -u sammy
  2. psql

Oder Sie können dies inline tun:

  1. sudo -u sammy psql

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:

  1. psql -d postgres

Nach der Anmeldung können Sie Ihre aktuellen Verbindungsinformationen abrufen, indem Sie Folgendes eingeben:

  1. \conninfo
Output
You 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:

  1. CREATE TABLE playground (
  2. equip_id serial PRIMARY KEY,
  3. type varchar (50) NOT NULL,
  4. color varchar (25) NOT NULL,
  5. location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
  6. install_date date
  7. );

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:

  1. \d
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:

  1. \dt
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:

  1. INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
  2. INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');

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:

  1. SELECT * FROM playground;
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:

  1. DELETE FROM playground WHERE type = 'slide';

Abfrage der Tabelle erneut:

  1. SELECT * FROM playground;
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:

  1. ALTER TABLE playground ADD last_maint date;

Sehen Sie sich Ihre Tabelleninformationen erneut an. Es wurde eine neue Spalte hinzugefügt, aber keine Daten wurden eingegeben:

  1. SELECT * FROM playground;
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:

  1. ALTER TABLE playground DROP last_maint;

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:

  1. UPDATE playground SET color = 'red' WHERE type = 'swing';

Sie können überprüfen, ob die Operation erfolgreich war, indem Sie die Daten erneut abfragen:

  1. SELECT * FROM playground;
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