Kan iemand mij adviseren hoe ik in Oracle 11g een gebruiker aanmaak en die gebruiker alleen de mogelijkheid geef om één bepaalde stored procedure uit te voeren en de tabellen in die procedure.
Ik weet niet precies hoe ik dit moet doen!
Verbind als SYSTEEM.
CREATE USER username IDENTIFIED BY apassword;
GRANT CONNECT TO username;
GRANT EXECUTE on schema.procedure TO username;
Misschien moet u ook:
GRANT SELECT [, INSERT] [, UPDATE] [, DELETE] on schema.table TO username;
naar de tabellen die de procedure gebruikt.
De Oracle documentatie is uitgebreid, online en gratis. Je zou het moeten leren gebruiken. De syntaxis voor CREATE USER vind je hier en voor GRANT vind je hier,
Om verbinding te maken met de database moeten we een gebruiker de CREATE SESSION privilege toekennen.
Om de nieuwe gebruiker rechten te geven op een opgeslagen procedure moeten we het EXECUTE privilege toekennen. De concessieverlener moet een van deze zijn:
Merk op dat we normaal gesproken geen rechten hoeven te verlenen op objecten die door een opgeslagen procedure worden gebruikt om de procedure te kunnen gebruiken. De standaard toestemming is dat we de procedure uitvoeren met dezelfde rechten als de procedure eigenaar en als het ware hun rechten erven bij het uitvoeren van de procedure. Dit wordt gedekt door de AUTHID clausule. De standaardinstelling is definer (d.w.z. procedure-eigenaar). Alleen als de AUTHID is ingesteld op CURRENT_USER (de invoker, dat is onze nieuwe gebruiker) moeten we rechten toekennen op objecten die door de procedure worden gebruikt. Lees meer.