IT-Knowledgebase
de Datenbanken postgres

Eine Postgres Datenbank installieren

Postgres ist mit die bekannteste und eine sehr weit verbreitete Datenbank mit vielen Möglichkeiten Sie zu erweitern oder zu optimieren. Hier schauen wir uns mal an, wie man Sie denn unter einem Debian/Ubuntu Server installiert bekommt.

Wie so oft ist auch Postgres bereits in den Paketquellen von Debian/Ubuntu enthalten und kann einfach installiert mit apt werden.

1sudo apt install postgresql

Offzielle Pakete verwenden

Um die Pakete von Postgres direkt einzubinden für aktuellere Versionen brauchen wir zuerst den gpg Key und können anschließend die Quelle unter der apt-Konfiguration angeben.

1# installation der Voraussetzungen
2sudo apt install curl ca-certificates
3sudo install -d /usr/share/postgresql-common/pgdg
4# erstellt das Verzeichnis, worin sich nachher der gpg key befinden wird
5sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc
6
7# Erstellt die Source Datei für apt
8sudo sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Mittels apt update aktualisieren wir dann einmal unsere Pakete und können anschließend postgres installieren.

Die Pakete dafür gliedern sich wie folgt lauf offizieller Dokumentation:

Name Beschreibung
postgresql-client-16 client libraries and client binaries
postgresql-16 core database server
postgresql-doc-16 documentation
libpq-dev libraries and headers for C language frontend development
postgresql-server-dev-16 libraries and headers for C language backend development

Für die installation des Servers brauchen wir also das postgresql-16 Paket, welches wir mittels folgendem Befehl installieren können.

1sudo apt install postgresql-16

Inbetriebnahme und Verbindung

Nachdem der Server installiert wurde können wir sicherstellen, dass die Datenbank richtig funktioniert und wir uns verbinden können. Um zu sehen, dass der Server läuft können wir uns mittels service oder systemctl jeweils den Status anzeigen lassen.

1➜ systemctl status postgresql
2● postgresql.service - PostgreSQL RDBMS
3     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
4     Active: active (exited) since Wed 2024-10-23 09:58:08 CEST; 1h 23min ago
5   Main PID: 229149 (code=exited, status=0/SUCCESS)
6        CPU: 1ms
7
8Oct 23 09:58:08 ubuntu-linux-22-04-02-desktop systemd[1]: Starting PostgreSQL RDBMS...
9Oct 23 09:58:08 ubuntu-linux-22-04-02-desktop systemd[1]: Finished PostgreSQL RDBMS.

Anzeige mit systemctl

1➜ service postgresql status
2● postgresql.service - PostgreSQL RDBMS
3     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
4     Active: active (exited) since Wed 2024-10-23 09:58:08 CEST; 29s ago
5   Main PID: 229149 (code=exited, status=0/SUCCESS)
6        CPU: 1ms
7
8Oct 23 09:58:08 ubuntu-linux-22-04-02-desktop systemd[1]: Starting PostgreSQL RDBMS...
9Oct 23 09:58:08 ubuntu-linux-22-04-02-desktop systemd[1]: Finished PostgreSQL RDBMS.

Anzeige mit service

Der Service hört nun standardmäßig auf den Port 5432 und das Interface localhost. Das bedeutet, dass der Service von außen nicht erreichbar ist. Wir stellen also die Verbindung auf dem Postgres Server her mittels dem CLI-Tool psql. Bevor wir das machen müssen wir uns allerdings erstmal das Passwort selber setzen.

Die Verbindungseinstellungen von Postgres werden in der pg_hba.conf Datei verwaltet und liegt unter: /etc/postgresql/16/main/pg_hba.conf. Wir öffnen also die Datei und ändern den Inhalt von unserer Datei wie folgt ab:

 1# Database administrative login by Unix domain socket
 2local   all             postgres                                peer
 3
 4# TYPE  DATABASE        USER            ADDRESS                 METHOD
 5
 6# "local" is for Unix domain socket connections only
 7local   all             all                                     peer
 8# IPv4 local connections:
 9host    all             all             127.0.0.1/32            scram-sha-256
10# IPv6 local connections:
11host    all             all             ::1/128                 scram-sha-256
12# Allow replication connections from localhost, by a user with the
13# replication privilege.
14local   replication     all                                     peer
15host    replication     all             127.0.0.1/32            scram-sha-256
16host    replication     all             ::1/128                 scram-sha-256

Hier ist die Zeile: host all all 127.0.0.1/32 scram-sha-256 wichtig.

Wir ändern hier die Verbindung auf trust (von scram-sha-256), so dass die ganze Datei wie folgt aussieht.

 1# Database administrative login by Unix domain socket
 2local   all             postgres                                peer
 3
 4# TYPE  DATABASE        USER            ADDRESS                 METHOD
 5
 6# "local" is for Unix domain socket connections only
 7local   all             all                                     peer
 8# IPv4 local connections:
 9host    all             all             127.0.0.1/32            trust
10# IPv6 local connections:
11host    all             all             ::1/128                 scram-sha-256
12# Allow replication connections from localhost, by a user with the
13# replication privilege.
14local   replication     all                                     peer
15host    replication     all             127.0.0.1/32            scram-sha-256
16host    replication     all             ::1/128                 scram-sha-256

Nachdem ändern dieser Datei muss immer ein neustart von postgres gemacht werden. Den Neustart können wir auch mittels service oder systemctl durchführen.

1service postgresql restart
2
3systemctl restart postgresql

Danach können wir uns anmelden mit

1psql -U postgres -h localhost

Eine Eingabe von einem Passwort ist nicht erforderlich, da wir jede Verbindung aktuell annehmen

Um das Passwort nun ändern zu können müssen wir mit SQL den User verändern. Das ganze geht relativ einfach mitels:

1ALTER USER postgres PASSWORD 'myPasswort';

Wichtig ist hier das ; (Semikolon), da es den Befehl beendet

Danach sollten wir normalerweise den Wert wieder auf scram-sha256 ändern von der pg_hba.conf Datei, da sonst jeder auf dem Server sich mit der Datenbank verbinden kann.

Nach dem abändern verbinden wir uns mit der gleichen Methode mit der Datenbank, werden danach allerdings mit einer Passwortabfrage unterbrochen.

Weiteres

Um nun weiter mit der Datenbank zu arbeiten kann hier auf der it-knowledgebase.net nach SQL gesucht werden oder postgres um mehr Informationen zu bekommen und die SQL Syntax mehr zu verstehen.

Direktlink: SQL Suche Direktlink: Postgres Suche