Ich möchte einem Benutzer alle Berechtigungen für eine Datenbank erteilen, ohne sie zum Administrator zu machen. Der Grund, warum ich das tun möchte, ist, dass DEV und PROD im Moment unterschiedliche DBs im selben Cluster sind, sodass ich nicht möchte, dass ein Benutzer Produktionsobjekte ändern kann, sondern dass er Objekte in DEV ändern kann.
Ich habe es versucht:
grant ALL on database MY_DB to group MY_GROUP;
aber es scheint keine Erlaubnis zu geben.
Dann habe ich versucht:
grant all privileges on schema MY_SCHEMA to group MY_GROUP;
und es scheint mir die Erlaubnis zu geben, Objekte zu erstellen, aber keine Objekte in diesem Schema abzufragen oder zu löschen, die anderen Benutzern gehören
Ich könnte fortfahren, indem ich dem Benutzer auf MY_SCHEMA die USAGE-Berechtigung erteile, aber dann würde es sich darüber beschweren, dass keine Berechtigungen für die Tabelle vorliegen ...
Meine Frage lautet also: Gibt es eine einfache Möglichkeit, einem Benutzer in einer Datenbank alle Berechtigungen zu erteilen?
Ich arbeite an PostgreSQL 8.1.23.
quelle
ON DATABASE
klingt mächtig, macht aber nicht viel. Es ist nur ein Anfang. Es werden keine Berechtigungen für enthaltene Objekte gewährt.In PostgreSQL 9.0+ würden Sie Folgendes tun:
Wenn Sie dies auch für neu erstellte Beziehungen aktivieren möchten, legen Sie die Standardberechtigungen fest:
Wenn Sie jedoch 8.1 verwenden, müssen Sie es selbst codieren:
Dadurch werden die Berechtigungen für alle Beziehungen festgelegt: Tabellen, Ansichten, Indizes, Sequenzen usw. Wenn Sie dies einschränken möchten, filtern Sie nach
pg_class.relkind
. Weitere Informationen finden Sie in den pg_class-Dokumenten .Sie sollten diese Funktion als Superuser und so regelmäßig ausführen, wie es Ihre Anwendung erfordert. Eine Option wäre, dies in einen Cron-Job zu packen, der jeden Tag oder jede Stunde ausgeführt wird.
quelle
Ich habe Folgendes getan, um eine Rolle 'eSumit' in der PostgreSQL 9.4.15-Datenbank hinzuzufügen und alle Berechtigungen für diese Rolle zu erteilen:
Überprüfen Sie auch die pg_table-Eingaben über:
Wählen Sie * aus pg_roles;
Schnappschuss von Datenbankabfragen:
quelle