Einführung
In diesem Lab installieren wir PostgreSQL auf der LabEx-VM und führen die Ersteinrichtung durch. Ziel ist es, PostgreSQL betriebsbereit zu machen und die grundlegende Funktionalität zu überprüfen.
Wir beginnen mit der Aktualisierung der Paketlisten und der Installation des PostgreSQL-Servers zusammen mit dem Paket postgresql-contrib. Nach der Installation stellen wir sicher, dass der PostgreSQL-Dienst läuft und Verbindungen akzeptiert, indem wir den Befehl pg_isready verwenden. Abschließend erkunden wir die Standarddatenbanken und prüfen den Serverstatus sowie die grundlegende Konfiguration.
PostgreSQL installieren und Installation überprüfen
In diesem Schritt installieren wir PostgreSQL auf der LabEx-VM und verifizieren, dass die Installation erfolgreich war. PostgreSQL ist ein leistungsstarkes, quelloffenes relationales Datenbankmanagementsystem (RDBMS).
Zuerst aktualisieren wir die Paketlisten für Upgrades und Neuinstallationen. Öffnen Sie ein Terminal in der LabEx-VM. Sie finden das Terminal-Symbol auf dem Desktop.
Führen Sie den folgenden Befehl aus:
sudo apt update
Dieser Befehl aktualisiert die Liste der verfügbaren Pakete und deren Versionen, installiert oder aktualisiert jedoch keine Pakete. Sie sollten eine Ausgabe sehen, die anzeigt, dass die Paketlisten aktualisiert werden.
Installieren Sie nun den PostgreSQL-Server und das Paket postgresql-contrib. Das Paket postgresql-contrib bietet zusätzliche Dienstprogramme und Funktionen, die oft nützlich sind.
Führen Sie den folgenden Befehl aus:
sudo apt install postgresql postgresql-contrib -y

Das Flag -y beantwortet automatisch alle während des Installationsprozesses auftretenden Abfragen mit "Ja". Dieser Befehl lädt PostgreSQL und die zugehörigen Pakete herunter und installiert sie. Sie werden eine umfangreiche Ausgabe sehen, während die Pakete heruntergeladen und installiert werden.
Nach Abschluss der Installation müssen wir überprüfen, ob PostgreSQL läuft. PostgreSQL sollte nach der Installation automatisch starten.
Um den Status des PostgreSQL-Dienstes zu überprüfen, führen Sie den folgenden Befehl aus:
sudo service postgresql status
Wir können auch den Befehl pg_isready verwenden, um zu prüfen, ob der PostgreSQL-Server läuft und Verbindungen akzeptiert.
Führen Sie den folgenden Befehl aus:
pg_isready
Wenn PostgreSQL läuft, sollten Sie die folgende Ausgabe sehen:
/var/run/postgresql:5432 - accepting connections
Falls PostgreSQL nicht läuft, erhalten Sie möglicherweise eine Fehlermeldung wie:
/var/run/postgresql:5432 - no response
Sollten Sie auf den Fehler "no response" stoßen, versuchen Sie, den PostgreSQL-Dienst neu zu starten. Verwenden Sie dazu den folgenden Befehl:
sudo service postgresql restart
Führen Sie anschließend erneut pg_isready aus, um den Status zu prüfen.

Wenn pg_isready "accepting connections" anzeigt, bestätigt dies, dass PostgreSQL erfolgreich installiert wurde und läuft.
Zugriff auf die PostgreSQL-Shell (psql)
In diesem Schritt greifen wir auf die PostgreSQL-Shell psql zu, ein Befehlszeilenwerkzeug zur Interaktion mit PostgreSQL-Datenbanken. Mit psql können Sie SQL-Abfragen ausführen, Datenbanken verwalten und andere administrative Aufgaben erledigen.
Standardmäßig erstellt PostgreSQL einen Unix-Benutzer namens postgres, der dem PostgreSQL-Superuser entspricht. Um auf die psql-Shell zuzugreifen, können Sie entweder zum Benutzer postgres wechseln oder sudo verwenden, um Befehle als Benutzer postgres auszuführen.
Wechseln wir zunächst zum Benutzer postgres. Führen Sie den folgenden Befehl aus:
sudo -i -u postgres
Dieser Befehl wechselt den aktuellen Benutzer zu postgres. Sie werden feststellen, dass sich die Eingabeaufforderung ändert, um den neuen Benutzer anzuzeigen.
Da Sie nun als Benutzer postgres angemeldet sind, können Sie auf die psql-Shell zugreifen. Führen Sie den folgenden Befehl aus:
psql
Dieser Befehl öffnet die psql-Shell. Sie sollten eine Eingabeaufforderung sehen, die wie folgt aussieht:
postgres=#
Dies zeigt an, dass Sie mit dem PostgreSQL-Server verbunden sind und nun SQL-Befehle ausführen können.
Um die psql-Shell zu verlassen, geben Sie \q ein und drücken die Eingabetaste:
postgres=## \q
Sie kehren damit zur Shell des Benutzers postgres zurück.
Um die Shell des Benutzers postgres zu verlassen und zu Ihrem ursprünglichen Benutzer (labex) zurückzukehren, geben Sie exit ein und drücken die Eingabetaste:
exit
Alternativ können Sie als Benutzer labex direkt mit sudo auf die psql-Shell zugreifen. Dies erspart den Benutzerwechsel.

Führen Sie den folgenden Befehl aus:
sudo -u postgres psql
Dieser Befehl führt psql als Benutzer postgres aus. Sie werden direkt mit der psql-Shell verbunden.
Um die psql-Shell erneut zu verlassen, geben Sie \q ein und drücken die Eingabetaste:
postgres=## \q
Sie kehren damit zur Shell des Benutzers labex zurück.
Zusammenfassend haben Sie zwei Möglichkeiten kennengelernt, auf die psql-Shell zuzugreifen: den Wechsel zum Benutzer postgres und die Verwendung von sudo. Beide Methoden führen zum gleichen Ergebnis, wobei die Verwendung von sudo in einigen Fällen bequemer sein kann.
Standarddatenbanken erkunden
In diesem Schritt erkunden wir die Standarddatenbanken, die bei der Installation von PostgreSQL erstellt werden. Diese Datenbanken bieten wesentliche Funktionen und Informationen über den PostgreSQL-Server.
Greifen Sie zunächst als Benutzer postgres auf die psql-Shell zu. Sie können den folgenden Befehl verwenden:
sudo -u postgres psql
Sobald Sie sich in der psql-Shell befinden, können Sie die verfügbaren Datenbanken mit dem Befehl \l auflisten. Führen Sie den folgenden Befehl aus:
postgres=## \l
Dieser Befehl zeigt eine Liste der Datenbanken sowie Informationen zu deren Eigentümern, Kodierungen und Zugriffsrechten an. Sie sollten mindestens drei Datenbanken sehen:
postgres: Dies ist die Standarddatenbank, mit der Sie verbunden werden, wenn Sie erstmals auf diepsql-Shell zugreifen. Sie wird häufig für administrative Aufgaben verwendet.template0: Diese Datenbank dient als Vorlage für die Erstellung neuer Datenbanken. Sie sollten diese Datenbank nicht verändern.template1: Dies ist eine weitere Vorlagendatenbank für die Erstellung neuer Datenbanken. Es handelt sich um eine Standardvorlage, die angepasst werden kann.

Um eine Verbindung zu einer bestimmten Datenbank herzustellen, können Sie den Befehl \c gefolgt vom Datenbanknamen verwenden. Um beispielsweise eine Verbindung zur Datenbank postgres herzustellen, führen Sie den folgenden Befehl aus:
postgres=## \c postgres
Sie sollten eine Meldung sehen, die bestätigt, dass Sie nun mit der Datenbank postgres als Benutzer postgres verbunden sind:
You are now connected to database "postgres" as user "postgres".
Da Sie nun mit der Datenbank postgres verbunden sind, können Sie deren Inhalt erkunden. Sie können beispielsweise die Tabellen in der Datenbank mit dem Befehl \dt auflisten:
postgres=## \dt
Dieser Befehl zeigt eine Liste der Tabellen in der aktuellen Datenbank an. Da die Datenbank postgres hauptsächlich für administrative Aufgaben verwendet wird, enthält sie möglicherweise keine benutzerdefinierten Tabellen.
Sie können auch Informationen über die aktuelle Datenbankverbindung mit dem Befehl \conninfo anzeigen:
postgres=## \conninfo
Dieser Befehl zeigt Informationen wie Datenbankname, Benutzer, Host und Port an.
Um die Verbindung zur aktuellen Datenbank zu trennen und zur Standardverbindung zurückzukehren, können Sie den Befehl \c ohne Angabe eines Datenbanknamens verwenden:
postgres=## \c
Dies verbindet Sie zurück zur Standarddatenbank, bei der es sich normalerweise um die Datenbank postgres handelt.

Beenden Sie abschließend die psql-Shell, indem Sie \q eingeben und die Eingabetaste drücken:
postgres=## \q
Sie kehren damit zur Shell des Benutzers labex zurück.
In diesem Schritt haben Sie gelernt, wie man verfügbare Datenbanken auflistet, eine Verbindung zu einer bestimmten Datenbank herstellt und deren Inhalt über die psql-Shell erkundet.
Serverstatus und grundlegende Konfiguration prüfen
In diesem Schritt überprüfen wir den Status des PostgreSQL-Servers und erkunden einige grundlegende Konfigurationseinstellungen.
Wie bereits erwähnt, funktionieren systemctl-Befehle möglicherweise nicht wie erwartet, da die LabEx-VM in einem Docker-Container läuft. Wir verwenden daher hauptsächlich pg_isready und psql, um den Serverstatus zu prüfen.
Überprüfen wir zunächst erneut, ob der PostgreSQL-Server läuft. Führen Sie den folgenden Befehl aus:
pg_isready
Wenn PostgreSQL läuft, sollten Sie die folgende Ausgabe sehen:
/var/run/postgresql:5432 - accepting connections
Überprüfen wir nun einige grundlegende Konfigurationseinstellungen über die psql-Shell. Greifen Sie als Benutzer postgres auf die psql-Shell zu:
sudo -u postgres psql
Sobald Sie sich in der psql-Shell befinden, können Sie die PostgreSQL-Version mit der folgenden SQL-Abfrage prüfen:
SELECT version();
Führen Sie diese Abfrage in der psql-Shell aus. Sie sollten eine Ausgabe ähnlich der folgenden sehen:
version
----------------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 14.17 (Ubuntu 14.17-0ubuntu0.22.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, 64-bit
(1 row)
Dies zeigt die auf dem Server installierte PostgreSQL-Version an.
Sie können auch den aktuellen Datenbankbenutzer prüfen:
SELECT user;
Die Ausgabe lautet:
user
----------
postgres
(1 row)
Um den Namen der Datenbank zu prüfen, mit der Sie aktuell verbunden sind, verwenden Sie:
SELECT current_database();
Die Ausgabe lautet:
current_database
------------------
postgres
(1 row)
Um die Konfigurationseinstellungen anzuzeigen, können Sie den Befehl SHOW verwenden. Um beispielsweise die Einstellung listen_addresses zu prüfen, die angibt, auf welchen IP-Adressen der Server auf Verbindungen wartet, führen Sie den folgenden Befehl aus:
SHOW listen_addresses;
Die Ausgabe wird wahrscheinlich wie folgt lauten:
listen_addresses
--------------------
localhost
(1 row)
localhost zeigt an, dass der Server auf dem lokalen Host lauscht.
Eine weitere nützliche Einstellung ist port, die die Portnummer angibt, auf der der Server auf Verbindungen wartet:
SHOW port;
Die Ausgabe lautet:
port
------
5432
(1 row)
Dies zeigt an, dass der Server auf Port 5432 lauscht, dem Standard-PostgreSQL-Port.

Beenden Sie abschließend die psql-Shell, indem Sie \q eingeben und die Eingabetaste drücken:
postgres=## \q
Sie kehren damit zur Shell des Benutzers labex zurück.
In diesem Schritt haben Sie gelernt, wie man den Status des PostgreSQL-Servers überprüft und einige grundlegende Konfigurationseinstellungen mithilfe von pg_isready und der psql-Shell erkundet.
Zusammenfassung
In diesem Lab haben wir das PostgreSQL RDBMS auf der LabEx-VM mit apt update und apt install postgresql postgresql-contrib -y installiert. Das Flag -y wurde verwendet, um während der Installation automatisch alle Abfragen zu bestätigen.
Nach der Installation haben wir überprüft, ob der PostgreSQL-Dienst läuft und Verbindungen akzeptiert. Da die LabEx-VM in einem Docker-Container läuft, haben wir den Befehl pg_isready anstelle von systemctl status postgresql verwendet, um den Serverstatus zu prüfen. Die erwartete Ausgabe von pg_isready bei laufendem Server ist /var/run/postgresql:5432 - accepting connections.


