Poate cineva să mă sfătuiască cum să creez un utilizator în Oracle 11g și să îi acord acelui utilizator capacitatea de a executa doar o anumită procedură stocată și tabelele din acea procedură.
Nu sunt foarte sigur cum să fac acest lucru!
Conectați-vă ca SYSTEM.
CREATE USER username IDENTIFIED BY apassword;
GRANT CONNECT TO username;
GRANT EXECUTE on schema.procedure TO username;
De asemenea, este posibil să fie necesar să:
GRANT SELECT [, INSERT] [, UPDATE] [, DELETE] on schema.table TO username;
la orice tabele pe care le utilizează procedura.
Documentația Oracle este cuprinzătoare, online și gratuită. Ar trebui să învățați să o utilizați. Puteți găsi sintaxa pentru CREATE USER aici și pentru GRANT aici,
Pentru a ne conecta la baza de date, trebuie să acordăm unui utilizator privilegiul CREATE SESSION.
Pentru a permite noului utilizator să aibă drepturi asupra unei proceduri stocate, trebuie să acordăm privilegiul EXECUTE. Autorul acordării trebuie să fie unul dintre aceștia:
Rețineți că, în mod normal, nu ar trebui să acordăm drepturi asupra obiectelor utilizate de o procedură stocată pentru a putea utiliza procedura respectivă. Permisiunea implicită este aceea că executăm procedura cu aceleași drepturi ca și proprietarul procedurii și, ca și cum am moșteni drepturile acestuia atunci când executăm procedura. Acest aspect este acoperit de clauza AUTHID. Valoarea implicită este definer (adică proprietarul procedurii). Numai dacă AUTHID este setat la CURRENT_USER (cel care invocă, adică noul nostru utilizator) trebuie să acordăm drepturi asupra obiectelor utilizate de procedură. Aflați mai multe.