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
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
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.
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