2012-04-10 15 views
18

Ich versuche, einen Benutzer Erlaubnis geben, eine gespeicherte Prozedur auf der Ebene der gespeicherten Prozedur auf einer MySQL-Datenbank auszuführen, anstatt einem Benutzer zu erlauben, eine gespeicherte Prozedur in der Datenbank auszuführen. Ich habe versucht, den folgenden Code auszuführen:MySQL Stored Procedure Berechtigungen

GRANT EXECUTE ON myDB.spName TO 'TestUser'@'localhost'; 

aber ich halte die folgende Fehlermeldung erhalten:

Illegal GRANT/REVOKE command, please consult the manual to see which privileges can be used.

Ich habe versucht, es zu folgendem Wechsel:

GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser'@'localhost'; 

und ich bekomme ein anderer Fehler, der angibt:

Cant find any matching rows in the user table.

Ich bin verwirrt, wo ich falsch liege?

Auch auf der MySQL Workbench kann ich keine Möglichkeit sehen, Berechtigungen auf der Ebene der gespeicherten Prozedur über die GUI zu gewähren. Ist das richtig oder fehlt mir etwas?

Vielen Dank im Voraus.

Antwort

27

Ihr zweiter Versuch ist der richtige Weg, um vorwärts zu gehen e.

g
GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser'@'localhost'; 

aber wenn das nicht funktioniert, Check

a) Sie (der Benutzer, von dem Sie alle diese Befehl ausgeführt werden) haben Erteilung Rechte [d.h WITH GRANT OPTION]. Wenn Sie root sind, dann ist es oky

b) Überprüfen Sie Benutzer existiert, denen Sie Berechtigung erteilen e.

g
select user from mysql.user where user like 'test%'; 

wenn keine neuen Benutzer hinzufügen, z

CREATE USER 'TestUser'@'localhost' IDENTIFIED BY 'passwordxxxx'; 
#depending on you needs 
GRANT SELECT,DELETE,UPDATE PRIVILEGES ON myDb.* TO 'TestUser'@'localhost'; 

Hoffnung könnte dies :)

+0

Im als root angemeldet und der Benutzer vorhanden ist, wenn der Code ausgeführt wird: wählen Sie den Benutzer aus mysql.user wo Benutzer wie ‚test%‘; aber ich schein immer noch die gleichen fehler zu bekommen. – Olly

+0

versuchen, einen neuen Benutzer hinzuzufügen, wie ich vorgeschlagen habe und Ausführungsrechte für diesen Benutzer gewähren – sakhunzai

+2

noch einmal versuchen mit Passwort: 'GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser' @ 'localhost' identifiziert durch 'password';' – sakhunzai

1

Um den anderen Teil Ihrer Frage zu beantworten bezüglich MySQL Workbench helfen, ich war das gleiche Problem haben. Aber nach dem Experimentieren habe ich entdeckt, dass wenn Sie eine Rolle erstellen und die Registerkarte Berechtigungen unten öffnen, können Sie die Routine aus der Modellübersicht in das Objektfeld ziehen. Von dort klicken Sie einfach auf das neu hinzugefügte Objekt und fügen Sie die gewünschten Berechtigungen für diese Rolle hinzu.

Hoffnung, das hilft :)