Nur die Ausführung von Stored Procedures zulassen

Nur die Ausführung von Stored Procedures zulassen

am 26.07.2007 13:07:55 von monte

Hi,

für meine MySQL-Datenbank habe ich diverse Stored Procedures und Stored
Functions implementiert. Zudem existieren 4 Benutzerkonten, die über
unterschiedliche Rechte verfügen (bspw. ein Konto, welches nur
SELECT-Anweisungen auf der gesamten Datenbank ausführen kann).
Damit jedes Benutzerkonto Stored Procedures ausführen kann, muss das
EXECUTE-Privileg vergeben sein. Somit kann zunächst jedes Benutzerkonto alle
Stored Procedures aufrufen. Um zu verhindern, dass bspw. das Benutzerkonto,
welches nur SELECT-Anweisungen ausführen darf, beim Aufruf einer Stored
Procedure darin enthaltene INSERT-Anweisungen ausführt, muss bei der
Deklaration der Stored Procedures SQL SECURITY INVOKER angegeben werden,
damit die Rechte des aufrufenden Benutzers berücksichtigt werden.
So weit so gut. Allerdings möchte ich verhindern, dass ein Benutzerkonto,
welches über das EXECUTE- und zusätzlich über das SELECT-Recht verfügt,
SELECT-Anweisungen durchführen kann (also bspw. SELECT * FROM person).
Man soll lediglich über Stored Procedures mit der Datenbank kommunizieren
können (also nur CALL getall_person()).
Dabei hilft es mir nicht, für alle Benutzerknoten nur das EXECUTE zu
vergeben, da ich ja noch unterscheiden möchte wer bspw. nur SELECT- oder
INSERT-Anweisungen durchführen darf, um "Access-Denied"-Fehler
hervorzurufen.
Weiß jemand wie sich das in MySQL umsetzen lässt?

Grüße,

José Monte.