Moin moin,
folgende Ausgangslage:
-
Es existiert der übliche Default-User “postgres” mit allen Rechten
-
Ich erstelle eine neue Gruppe und einen neuen User:
– dies soll der Standard-Owner für die meisten Objekte werden:
CREATE ROLE adm_group NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
–dies soll der Standard-User für das (scriptgesteuerte) Anlegen von Datenbanken werden:
CREATE ROLE adm_user LOGIN NOSUPERUSER INHERIT CREATEDB CREATEROLE NOREPLICATION PASSWORD 'xyz';
– adm_user soll natürlich auf alle Objekte zugreifen können:
GRANT adm_group TO adm_user;
- Aufruf psql und Erstellen einer neuen Datenbank:
psql -U adm_user
CREATE DATABASE application WITH OWNER = adm_group;
Klappt alles soweit, allerdings sieht das Schema PUBLIC der neuen Datenbank so aus:
SQL-Code des Schema: CREATE SCHEMA public AUTHORIZATION postgres … ;
Wieso hat PUBLIC postgres als OWNER?
Die Datenbank wurde ja erwartungsgemäß mit dem OWNER adm_group angelegt:
SQL-Code der DB: CREATE DATABASE application WITH OWNER = adm_group … ;
Ich würd ja noch verstehen, wenn PUBLIC adm_user (welcher der “Ersteller” war) als owner hätte … aber postgres? Läßt sich das verhindern? Kann man einen anderen Default-Owner einstellen?
Klar, ich kann mit
ALTER SCHEMA public OWNER TO adm_group;
den Owner ändern, dazu müßte ich mich aber in psql den User ändern. Ich würd jedoch gern verstehen, woher der PUBLIC default owner kommt bzw. wie man diesen ändern/beeinflussen kann.
Freu mich auf Kommentare
Danke, Rainer