2016-07-26 27 views
0

In meinem Szenario ist der Benutzer der Besitzer der Datenbank und was auch immer ist/werden wird sollte für ihn vollständig zugänglich sein/ihr. Aber ich möchte nicht, dass der Benutzer Zugriff auf irgendetwas außerhalb seiner eigenen Datenbank hat.Wie man Zugriff auf eine Datenbank und deren Inhalt gewährt, auch für Objekte werden in der Zukunft hinzugefügt

Wie bereits erwähnt, würde sich die Struktur der Datenbank im Laufe der Zeit ändern und ich möchte die Berechtigungen für jede hinzugefügte Tabelle/Schema/Funktion nicht zurücksetzen.

Wie kann ich eine solche Erlaubnis in PostgreSQL gewähren?

+3

Sie suchen nach 'ALTER DEFAULT PRIVILEGES' https://www.postgresql.org/docs/current/static/sql-alterdefaultprivileges.html –

+0

@a_horse_with_no_name Könnten Sie das bitte als Antwort posten? Bitte teilen Sie mir, wenn möglich, auch mit, wie Sie einer bestehenden Datenbank alle Privilegien bis zum allerletzten Objekt gewähren (deep grant !?). Vielen Dank. – Mehran

Antwort

0

Ich denke, Ihre beste Antwort ist eigentlich, dass der Besitzer standardmäßig Privilegien für jedes Datenbankobjekt gewähren/widerrufen kann. Wenn also alle Tabellen dem Eigentümer der Datenbank gehören, hat er standardmäßig Zugriff auf diese Tabellen, andere jedoch nicht. Der Besitzer kann auch Berechtigungen zuweisen. Stellen Sie daher sicher, dass alle Tabellen von diesem Benutzer erstellt werden und es kein Problem gibt. Bei anderen Tabellen können Sie den Besitzer später unter ALTER TABLE ändern.

Auf jeden Fall, lesen zwischen den Zeilen, das sieht aus wie Sie fragen. ALTER DEFAULT PRIVILEGES funktioniert auch, aber die Rolle, die Sie gewähren möchten, könnte dann vom Eigentümer einer bestimmten Tabelle gesperrt werden.