Rechte für gespeicherte Prozeduren an einen anderen Benutzer von Oracle vergeben

8

Ich bin ein Student der Undergraduate-Studien, und ich habe wenig Problem bei der Gewährung von Eigentumsrechten an einen Benutzer A zu einer gespeicherten Prozedur im Besitz von Benutzer B in der Datenbank Oracle 10g mode = xe.

Bitte helfen Sie mir, sql Befehle zu schreiben, um Eigentumsrechte an der gespeicherten Prozedur xyz einem anderen Benutzer zu erteilen A.

    
Basmah 29.11.2010, 15:43
quelle

5 Antworten

20

Ich bin mir nicht sicher, ob ich verstehe, was Sie unter "Eigentumsrechte" verstehen.

Wenn Benutzer B eine gespeicherte Prozedur besitzt, kann Benutzer B Benutzer A Berechtigung erteilen, die gespeicherte Prozedur auszuführen

%Vor%

Benutzer A würde dann die Prozedur unter Verwendung des vollständig qualifizierten Namens aufrufen, d. h.

%Vor%

Alternativ kann Benutzer A ein Synonym erstellen, um zu vermeiden, dass der vollständig qualifizierte Prozedurname verwendet werden muss.

%Vor%     
Justin Cave 29.11.2010, 16:02
quelle
4

Sie können nicht tun, was Sie meiner Meinung nach tun.

Die einzigen Berechtigungen, die Sie Prozeduren gewähren können, sind EXECUTE und DEBUG.

Wenn Sie zulassen möchten, dass Benutzer B eine Prozedur in Benutzer-A-Schema erstellt, muss Benutzer B die Berechtigung CREATE ANY PROCEDURE haben. ALTER ANY PROCEDURE und DROP ANY PROCEDURE sind die anderen anwendbaren Privilegien, die erforderlich sind, um Benutzer-A-Prozeduren für Benutzer B zu ändern oder zu löschen. Alle sind weitreichende Privilegien, da sie Benutzer B nicht auf ein bestimmtes Schema beschränken. Benutzer B sollte sehr vertrauenswürdig sein, wenn diese Berechtigungen gewährt werden.

BEARBEITEN:

Wie Justin bereits erwähnt hat, gibt es die Möglichkeit, A für ein Verfahren, das B gehört, Ausführungsrechte zu geben:

%Vor%     
DCookie 29.11.2010 16:06
quelle
1

Geben Sie in Ihrem DBA-Konto USERB das Recht, eine Prozedur mit grant grant create any procedure to USERB

zu erstellen

Die Prozedur wird aussehen

%Vor%

GRANT EXECUTE ON USERB.USERB_PROCEDURE TO USERA

Ich weiß, dass das eine sehr alte Frage ist, aber ich hoffe, ich könnte es ein bisschen abschlagen.

    
JustinC 14.12.2017 19:42
quelle
0

Pakete und gespeicherte Prozeduren in Oracle werden standardmäßig mit den Rechten des Pakets / Prozedur OWNER ausgeführt, nicht mit dem aktuell angemeldeten Benutzer.

Wenn Sie beispielsweise ein Paket aufrufen, das einen Benutzer erstellt, ist dies der Paketbesitzer und nicht der aufrufende Benutzer, der Benutzerrechte erstellen muss. Der Aufrufer muss lediglich eine Ausführungsberechtigung für das Paket haben.

Wenn Sie möchten, dass das Paket mit den Berechtigungen des aufrufenden Benutzers ausgeführt wird, müssen Sie beim Erstellen des Pakets AUTHID CURRENT_USER

angeben

In der Oracle-Dokumentation "Invoker Rights vs Definer Rights" finden Sie weitere Informationen Ссылка

Hoffe, das hilft.

    
Philip Johnson 27.10.2014 20:19
quelle
0
%Vor%

Dies ist ein Befehl, wenn wir dem Benutzer "testdb" ein create-Privileg geben wollen.

    
Raj Sharma 07.12.2015 20:49
quelle