Von Markus Flechtner auf Freitag, 24. November 2023
Kategorie: Data Management

Kurz und gut - Episode #14 Ein anderer Benutzer für PostgreSQL

Für PostgreSQL-Cluster gibt es den Benutzer postgres. Dieser wird bei der Installation mit angelegt und unter diesem Betriebssystembenutzer laufen dann die PostgreSQL-Cluster. Aber kann man einen PostgreSQL-Cluster auch unter einem anderen Benutzer laufen lassen?

Auf unserem Server läuft bereits ein PostgreSQL 15-Cluster unter dem Benutzer postgres.

dbserver:/home/postgres [PG14]$ ps -ef |grep postmaster |grep -v grep

postgres122710 13:44 ?00:00:01 /usr/pgsql-15/bin/postmaster -D /pgdata/PG15

Wie schaffen wir es jetzt, dass wir einen weiteren PostgreSQL-Cluster mit der gleichen Software, aber unter einem anderen Benutzer, laufen lassen?

Dazu müssen wir diesen neuen Benutzer erst einmal anlegen:

[root@dbserver ~]# groupadd -g 54333 postgres15

[root@dbserver ~]# useradd -d /home/postgres15 -g 54333 -m -u 54333 postgres15

Kontrolle:

Dann müssen wir das PGDATA-Verzeichnis für den neuen Cluster anlegen und die Zugriffsrechte entsprechend setzen:

[root@dbserver ~]# mkdir /pgdata/PG15A

[root@dbserver ~]# chown postgres15:postgres15 /pgdata/PG15A

Anlegen des Clusters als postgresql15:

In der postgresql.conf des neuen Cluster müssen wir vor dem ersten Start noch Anpassungen vornehmen:

1. Änderung des Ports (auf einen noch nicht verwendeten Port):

port = 5437

# (change requires restart)

2. Anpassung des Socket-Verzeichnisses (da der Benutzer postgres15 in das Standard-Verzeichnis /var/run/postgresql nicht schreiben kann) 

unix_socket_directories = '/tmp'

Anschließend können wir den neuen PostgreSQL-Cluster starten:

Kontrolle: 

Wird der Cluster über einen systemd-Service gestartet (z. B. beim Booten des Servers), so muss die Service-Konfiguration noch angepasst werden:

root# systemctl edit postgresql-15

Einzufügen sind folgende Zeilen:

Damit steht dem automatischen Start des neuen Clusters beim Systemstart unter dem Benutzer postgres15 nichts mehr im Wege. 

Fazit

​Es ist einfach möglich, einen PostgreSQL-Cluster unter einem anderen Benutzer als dem standardmäßigen Benutzer postgres laufen zu lassen. Wichtig sind dabei vor allen Dingen die richtigen Zugriffsrechte auf das Cluster-Verzeichnis PGDATA und das Socket-Verzeichnis.

Seminarempfehlung

Kommentare hinterlassen