
Ich richte einen neuen Datenbankserver ein, den ich als Backend für viele Dienste verwenden möchte. Jeder dieser Dienste kümmert sich im Allgemeinen nur um eine einzige Datenbank im System, daher möchte ich die Konten, mit denen jeder Dienst verbunden ist, isolieren, um nur auf diese Datenbank zugreifen zu können. Die Dienstanwendungen verwalten ihr eigenes Schema, daher möchte ich ihnen Administratorrechte für ihre Datenbank erteilen, aber sie sollten nicht in der Lage sein, auf irgendetwas anderes zuzugreifen.
Gibt es eine Möglichkeit, dies in Postgres einzurichten?
Diese Frage auf ServerFaultschlägt eine Methode vor, um einem Benutzer auf Schemaebene Berechtigungen zu erteilen. Dies funktioniert jedoch nicht für Datenbanken ( Alter Default Privileges In Database xx
gibt mir einen Syntaxfehler aus Database
).
Antwort1
Ich habe die Antwort fast sofort gefunden, als ich gefragt habe. Der magische Befehl, nach dem ich gesucht habe, lautet:
Alter Database xxx Owner To user_xxx;
Dies ist im Alter Database
Befehlshandbuch dokumentiert:
https://www.postgresql.org/docs/current/sql-alterdatabase.html