Hallo,
ich suche nach einem Weg einem DB-User das select Privileg auf alle Tabellen _eines_ Schemas zu erteilen. Ich möchte also grant select any table auf ein bestimmtes Schema beschränken.
Die Variante mir ein Script durch Abfrage von USER_TABLES zu bauen habe ich bereits überdacht.
select ‚grant select on ‚||table_name||‘ to myuser‘ from user_tables
Scheidet aber aus, da die Lösung nicht wartungsfrei ist. D.h. kommt eine neue Tabelle hinzu, erhält myuser nicht automatisch das Leserecht darauf - wie es bei grant select any table wäre.
             
            
              
              
              
            
            
           
          
            
            
              
Scheidet aber aus, da die Lösung nicht wartungsfrei ist. D.h.
kommt eine neue Tabelle hinzu, erhält myuser nicht automatisch
das Leserecht darauf - wie es bei grant select any table wäre.
…funktioniert das, wenn Du eine Rolle anlegst, die die jeweiligen Rechte besitzt:
create role owner_1_role;
grant select on owner_1.table_1 to owner_1_role;
…
grant owner_1_role to myuser;
grant owner_1_role to youruser;
grant owner_1_role to hisuser;
…
Kommt eine neue Tabelle hinzu, mußt Du die Rechte nur der Rolle granten; alle betroffenen User erhalten sie automatisch.
Grantest Du die Rechte in periodischen Abständen, z.B. jeden Abend per DBMS_JOB, ist das Ganze beinahe wartungsfrei.
Gruß
J.