So installieren und verwenden Sie PostgreSQL unter Ubuntu 18.04

Einführung

Relationale Datenbankverwaltungssysteme sind eine Schlüsselkomponente vieler Websites und Anwendungen. Sie bieten eine strukturierte Möglichkeit zum Speichern, Organisieren und Zugreifen auf Informationen.

PostgreSQL oder Postgres ist ein relationales Datenbankverwaltungssystem, das eine Implementierung der SQL-Abfragesprache bietet. Es ist eine beliebte Wahl für viele kleine und große Projekte und hat den Vorteil, dass es standardkonform ist und über viele erweiterte Funktionen wie zuverlässige Transaktionen und Parallelität ohne Lesesperren verfügt.

Dieses Handbuch demonstriert die Installation von Postgres auf einer Ubuntu 18.04 VPS-Instanz und enthält Anweisungen für die grundlegende Datenbankverwaltung.

Voraussetzungen

Um diesem Tutorial folgen zu können, benötigen Sie einen Ubuntu 18.04-Server, der gemäß unseremInitial Server Setup for Ubuntu 18.04-Handbuch konfiguriert wurde. Nach Abschluss dieses Lernprogramms sollte Ihr Server über einen Benutzer verfügen, der nichtrootist und über Sudo-Berechtigungen und eine grundlegende Firewall verfügt.

[[Schritt-1 - Installieren von Postgresql]] == Schritt 1 - Installieren von PostgreSQL

Die Standard-Repositorys von Ubuntu enthalten Postgres-Pakete, sodass Sie diese mit dem Paketierungssystem vonaptinstallieren können.

Da Sie in dieser Sitzung zum ersten Malapt verwenden, aktualisieren Sie Ihren lokalen Paketindex. Installieren Sie dann das Postgres-Paket zusammen mit einem-contrib-Paket, das einige zusätzliche Dienstprogramme und Funktionen hinzufügt:

sudo apt update
sudo apt install postgresql postgresql-contrib

Nachdem die Software installiert ist, können wir untersuchen, wie sie funktioniert und wie sie sich möglicherweise von ähnlichen Datenbankverwaltungssystemen unterscheidet, die Sie verwendet haben.

[[Schritt-2 -—- Verwenden von Postgresql-Rollen und -Datenbanken]] == Schritt 2 - Verwenden von PostgreSQL-Rollen und -Datenbanken

Standardmäßig verwendet Postgres für die Authentifizierung und Autorisierung ein Konzept mit der Bezeichnung "Rollen". Diese ähneln in gewisser Weise normalen Unix-Konten, aber Postgres unterscheidet nicht zwischen Benutzern und Gruppen und bevorzugt stattdessen den flexibleren Begriff „Rolle“.

Bei der Installation wird Postgres so eingerichtet, dass die Authentifizierung vonidentverwendet wird. Dies bedeutet, dass Postgres-Rollen einem passenden Unix / Linux-Systemkonto zugeordnet werden. Wenn in Postgres eine Rolle vorhanden ist, kann sich ein Unix / Linux-Benutzername mit demselben Namen als diese Rolle anmelden.

Bei der Installation wurde ein Benutzerkonto mit dem Namenpostgres erstellt, das der Standardrolle Postgres zugeordnet ist. Um Postgres zu nutzen, können Sie sich in dieses Konto einloggen.

Es gibt verschiedene Möglichkeiten, dieses Konto für den Zugriff auf Postgres zu verwenden.

Umschalten auf das postgres Konto

Wechseln Sie auf Ihrem Server zum Kontopostgres, indem Sie Folgendes eingeben:

sudo -i -u postgres

Sie können jetzt sofort auf eine Postgres-Eingabeaufforderung zugreifen, indem Sie Folgendes eingeben:

psql

Dadurch werden Sie bei der PostgreSQL-Eingabeaufforderung angemeldet, und von hier aus können Sie sofort mit dem Datenbankverwaltungssystem interagieren.

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

\q

Dadurch kehren Sie zur Linux-Eingabeaufforderung vonpostgreszurück.

Auf eine Postgres-Eingabeaufforderung zugreifen, ohne das Konto zu wechseln

Sie können den gewünschten Befehl auch mit dem Kontopostgresdirekt mitsudoausführen.

Im letzten Beispiel wurden Sie beispielsweise angewiesen, zur Postgres-Eingabeaufforderung zu gelangen, indem Sie zuerst zum Benutzerpostgreswechseln und dannpsql ausführen, um die Postgres-Eingabeaufforderung zu öffnen. Sie können dies in einem Schritt tun, indem Sie den einzelnen Befehlpsql alspostgres-Benutzer mitsudo wie folgt ausführen:

sudo -u postgres psql

Dadurch werden Sie direkt bei Postgres angemeldet, ohne dass dazwischen die Shell des Vermittlersbashliegt.

Sie können die interaktive Postgres-Sitzung wieder beenden, indem Sie Folgendes eingeben:

\q

Viele Anwendungsfälle erfordern mehr als eine Postgres-Rolle. Lesen Sie weiter, um zu erfahren, wie Sie diese konfigurieren.

[[Schritt 3 - Erstellen einer neuen Rolle]] == Schritt 3 - Erstellen einer neuen Rolle

Derzeit haben Sie nur die Rollepostgresin der Datenbank konfiguriert. Sie können neue Rollen über die Befehlszeile mit dem Befehlcreaterole erstellen. Das--interactive-Flag fordert Sie zur Eingabe des Namens der neuen Rolle auf und fragt Sie, ob sie über Superuser-Berechtigungen verfügen soll.

Wenn Sie alspostgres-Konto angemeldet sind, können Sie einen neuen Benutzer erstellen, indem Sie Folgendes eingeben:

createuser --interactive

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

sudo -u postgres createuser --interactive

Das Skript fordert Sie zur Auswahl auf und führt basierend auf Ihren Antworten die richtigen Postgres-Befehle aus, um einen Benutzer nach Ihren Vorgaben 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. Schauen Sie sich die Optionen auf der Seitemanan:

man createuser

Ihre Postgres-Installation 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] == Schritt 4 - Erstellen einer neuen Datenbank

Eine weitere Annahme, die das Postgres-Authentifizierungssystem standardmäßig vornimmt, ist, dass für jede zum Anmelden verwendete Rolle eine Datenbank mit demselben Namen vorhanden ist, auf die es zugreifen kann.

Wenn der Benutzer, den Sie im letzten Abschnitt erstellt haben,sammy heißt, versucht diese Rolle, eine Verbindung zu einer Datenbank herzustellen, die standardmäßig auch als "sammy" bezeichnet wird. Sie können die entsprechende Datenbank mit dem Befehlcreatedb erstellen.

Wenn Sie alspostgres-Konto angemeldet sind, geben Sie Folgendes ein:

createdb sammy

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

sudo -u postgres createdb sammy

Diese Flexibilität bietet mehrere Pfade zum Erstellen von Datenbanken nach Bedarf.

[[Schritt-5 - Öffnen einer Postgres-Eingabeaufforderung mit der neuen Rolle]] == Schritt 5 - Öffnen einer Postgres-Eingabeaufforderung mit der neuen Rolle

Um sich mit derident-basierten Authentifizierung anzumelden, benötigen Sie einen Linux-Benutzer mit demselben Namen wie Ihre Postgres-Rolle und -Datenbank.

Wenn Sie keinen passenden Linux-Benutzer zur Verfügung haben, können Sie einen mit dem Befehladdusererstellen. Sie müssen dies von Ihrem Nicht-root-Konto mitsudo-Berechtigungen aus tun (dh nicht alspostgres-Benutzer angemeldet):

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:

sudo -i -u sammy
psql

Oder Sie können dies inline tun:

sudo -u sammy psql

Dieser Befehl meldet Sie automatisch an, sofern alle Komponenten ordnungsgemäß konfiguriert wurden.

Wenn Sie möchten, dass Ihr Benutzer eine Verbindung zu einer anderen Datenbank herstellt, können Sie die Datenbank folgendermaßen angeben:

psql -d postgres

Sobald Sie angemeldet sind, können Sie Ihre aktuellen Verbindungsinformationen abrufen, indem Sie Folgendes eingeben:

\conninfo
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 - Erstellen und Löschen von Tabellen]] == Schritt 6 - Erstellen und Löschen von Tabellen

Nachdem Sie nun wissen, wie Sie eine Verbindung zum PostgreSQL-Datenbanksystem herstellen können, lernen Sie einige grundlegende Verwaltungsaufgaben von Postgres kennen.

Erstellen Sie zunächst eine Tabelle zum Speichern einiger Daten. Als Beispiel eine Tabelle, die einige Spielgeräte beschreibt.

Die grundlegende Syntax für diesen Befehl 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, geben diese Befehle der Tabelle einen Namen und definieren dann die Spalten sowie den Spaltentyp und die maximale Länge der Felddaten. Optional können Sie Tabelleneinschränkungen für jede Spalte hinzufügen.

Weitere Informationen zuhow to create and manage tables in Postgresfinden Sie hier.

Erstellen Sie zu Demonstrationszwecken eine einfache Tabelle wie die folgende:

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

Mit diesen Befehlen wird eine Tabelle erstellt, in der Spielgeräte inventarisiert werden. Dies beginnt mit einer Geräte-ID vom Typserial. Dieser Datentyp ist eine automatisch inkrementierende Ganzzahl. Sie haben dieser Spalte auch die Einschränkungprimary key gegeben. Dies bedeutet, dass die Werte eindeutig und nicht null sein müssen.

Für zwei der Spalten (equip_id undinstall_date) geben die Befehle keine Feldlänge an. Dies liegt daran, dass für einige Spaltentypen keine festgelegte Länge erforderlich ist, da die Länge vom Typ vorgegeben wird.

Die nächsten beiden Befehle erstellen Spalten für die Gerätetype undcolor, von denen jede nicht leer sein darf. Der Befehl danach erstellt einelocation-Spalte und erstellt eine Einschränkung, für die der Wert einer von acht möglichen Werten sein muss. Der letzte Befehl erstellt eine Datumsspalte, die das Datum aufzeichnet, an dem Sie das Gerät installiert haben.

Sie können Ihre neue Tabelle anzeigen, indem Sie Folgendes eingeben:

\d
Output                  List of relations
 Schema |          Name           |   Type   | Owner
--------+-------------------------+----------+-------
 public | playground              | table    | sammy
 public | playground_equip_id_seq | sequence | sammy
(2 rows)

Ihr Spielplatztisch ist hier, aber es gibt auchplayground_equip_id_seq vom Typsequence. Dies ist eine Darstellung des Typsserial, den Sie Ihrer Spalteequip_idgegeben haben. Dies verfolgt die nächste Nummer in der Sequenz 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:

\dt
Output          List of relations
 Schema |    Name    | Type  | Owner
--------+------------+-------+-------
 public | playground | table | sammy
(1 row)

[[Schritt 7 - Hinzufügen von Abfragen und Löschen von Daten in einer Tabelle] == Schritt 7 - Hinzufügen, Abfragen und Löschen von Daten in einer Tabelle

Nachdem Sie eine Tabelle erstellt haben, können Sie einige Daten einfügen.

Fügen Sie beispielsweise eine Folie und eine Schaukel hinzu, indem Sie die Tabelle aufrufen, zu der Sie hinzufügen möchten, die Spalten benennen und dann Daten für jede Spalte bereitstellen, wie folgt:

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

Sie sollten bei der Eingabe der Daten vorsichtig sein, um einige häufige Probleme zu vermeiden. Zum einen dürfen die Spaltennamen nicht in Anführungszeichen gesetzt werden, aber die von Ihnen eingegebenen Spaltenwerte müssen in Anführungszeichen gesetzt werden.

Beachten Sie außerdem, dass Sie keinen Wert für die Spalteequip_ideingeben. Dies liegt daran, dass dies automatisch generiert wird, wenn eine neue Zeile in der Tabelle erstellt wird.

Rufen Sie die hinzugefügten Informationen ab, indem Sie Folgendes eingeben:

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)

Hier können Sie sehen, dass Ihreequip_id erfolgreich ausgefüllt wurden und dass alle Ihre anderen Daten korrekt organisiert wurden.

Wenn die Folie auf dem Spielplatz bricht und Sie sie entfernen müssen, können Sie die Zeile auch von Ihrem Tisch entfernen, indem Sie Folgendes eingeben:

DELETE FROM playground WHERE type = 'slide';

Fragen Sie die Tabelle erneut ab:

SELECT * FROM playground;
Output equip_id | type  | color  | location  | install_date
----------+-------+--------+-----------+--------------
        2 | swing | yellow | northwest | 2018-08-16
(1 row)

Sie stellen fest, dass Ihre Folie nicht mehr Teil der Tabelle ist.

[[Schritt-8 - Hinzufügen und Löschen von Spalten aus einer Tabelle]] == Schritt 8 - Hinzufügen und Löschen von Spalten aus einer Tabelle

Nach dem Erstellen einer Tabelle können Sie diese ändern, um Spalten relativ einfach hinzuzufügen oder zu entfernen. Fügen Sie eine Spalte hinzu, um den letzten Wartungsbesuch für jedes Gerät anzuzeigen, indem Sie Folgendes eingeben:

ALTER TABLE playground ADD last_maint date;

Wenn Sie Ihre Tabelleninformationen erneut anzeigen, wird angezeigt, dass die neue Spalte hinzugefügt wurde (es wurden jedoch keine Daten eingegeben):

SELECT * FROM playground;
Output equip_id | type  | color  | location  | install_date | last_maint
----------+-------+--------+-----------+--------------+------------
        2 | swing | yellow | northwest | 2018-08-16   |
(1 row)

Das Löschen einer Spalte ist genauso einfach. Wenn Sie feststellen, dass Ihr Arbeitsteam ein separates Tool verwendet, um den Wartungsverlauf zu verfolgen, können Sie die Spalte löschen, indem Sie Folgendes eingeben:

ALTER TABLE playground DROP last_maint;

Dadurch werden die Spaltelast_maint und alle darin gefundenen Werte gelöscht, alle anderen Daten bleiben jedoch erhalten.

[[Schritt 9 - Aktualisieren von Daten in einer Tabelle] == Schritt 9 - Aktualisieren von Daten in einer Tabelle

Bisher haben Sie gelernt, wie Sie Datensätze zu einer Tabelle hinzufügen und löschen. In diesem Lernprogramm wurde jedoch noch nicht erläutert, wie vorhandene Einträge geändert werden.

Sie können die Werte eines vorhandenen Eintrags aktualisieren, indem Sie den gewünschten Datensatz abfragen und die Spalte auf den Wert setzen, den Sie verwenden möchten. Sie können den "Swing" -Datensatz abfragen (dies entsprichtevery Swing in Ihrer Tabelle) und seine Farbe in "Rot" ändern. Dies kann nützlich sein, wenn Sie dem Schaukel-Set einen Anstrich gegeben haben:

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

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

SELECT * FROM playground;
Output equip_id | type  | color | location  | install_date
----------+-------+-------+-----------+--------------
        2 | swing | red   | northwest | 2010-08-16
(1 row)

Wie Sie sehen, ist Ihre Folie jetzt als rot registriert.

Related