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
POSTGRESQL ADMINISTRATION DB-PG-01
ZUM SEMINAR