2012-04-10 17 views
18

Sto tentando di concedere a un utente il permesso di eseguire una stored procedure a livello di stored procedure su un database MySQL piuttosto che consentire a un utente di eseguire qualsiasi stored procedure nel database. Stavo cercando di eseguire il codice seguente:Autorizzazioni stored procedure MySQL

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

ma continuo a ottenere il seguente errore:

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

Ho provato a cambiare al seguente:

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

e ottenere un diverso errore affermando:

Cant find any matching rows in the user table.

Sono confuso su dove sto andando male?

Anche su MySQL Workbench non riesco a vedere alcun modo di concedere autorizzazioni a livello di procedura memorizzata tramite la GUI. È corretto o mi manca qualcosa?

Grazie in anticipo.

risposta

27

Il tuo secondo tentativo è giusto per andare avanti e. g

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

ma se questo non funziona controllo

a) si (l'utente da cui si esegue tutti questi comandi) dispone dei diritti di concessione [cioè CON GRANT OPTION]. Se sei root allora è oky

b) Verifica l'utente a cui stai concedendo il permesso di esecuzione e. g

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

se non aggiungere nuovo utente es

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

speranza che questo potrebbe aiutare :)

+0

Im il login come root e l'utente esiste quando si esegue il codice: select utente mysql.user dove l'utente come 'test%'; ma sembra che stia ricevendo gli stessi errori. – Olly

+0

provare ad aggiungere un nuovo utente come suggerito e concedere diritti di esecuzione a quell'utente – sakhunzai

+2

ancora una prova con password: 'GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser' @ 'localhost' identificato da 'password';' – sakhunzai

1

Per rispondere l'altra parte della tua domanda per quanto riguarda MySQL Workbench, ho avuto lo stesso problema. Ma dopo aver sperimentato ho scoperto che se si crea un ruolo e si apre la scheda dei privilegi in basso, è possibile trascinare la routine dalla Panoramica del modello nella casella degli oggetti. Da lì basta fare clic sull'oggetto appena aggiunto e aggiungere le autorizzazioni desiderate per quel ruolo.

Speranza che aiuta :)