2012-04-10 21 views
18

Estoy tratando de dar permiso a un usuario para ejecutar un procedimiento almacenado en el nivel de procedimiento almacenado en una base de datos MySQL en lugar de permitirle a un usuario ejecutar cualquier procedimiento almacenado en la base de datos. Yo estaba tratando de ejecutar el siguiente código:Permisos de procedimientos almacenados de MySQL

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

pero aparece el siguiente error:

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

He intentado cambiar a la siguiente:

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

y me da una diverso error que indica:

Cant find any matching rows in the user table.

¿Estoy confundido en cuanto a dónde me estoy equivocando?

También en MySQL Workbench parece que no veo ninguna forma de otorgar permisos en el nivel de procedimiento almacenado a través de la GUI. ¿Es correcto o me falta algo?

Gracias de antemano.

Respuesta

27

Su segundo intento es la forma correcta de seguir adelante e. g

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

pero si eso no funciona Compruebe

a) usted (el usuario desde el que se están ejecutando todos estos comandos) tiene derechos de subvención [es decir WITH GRANT OPTION]. Si es root, entonces es oky

b) Compruebe que existe el usuario al que está otorgando permiso de ejecución e. g

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

si no añadir nuevo usuario por ejemplo

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

esperanza que esto podría ayudar :)

+0

Im conectado como root y el usuario existe cuando se ejecuta el código: seleccione el usuario de mysql.user donde el usuario como 'prueba%'; pero sigo teniendo los mismos errores. – Olly

+0

intente agregar un nuevo usuario como sugerí y conceda derechos de ejecución a ese usuario – sakhunzai

+2

una prueba más con la contraseña: 'GRANT EJECUTE EL PROCEDIMIENTO myDB.spName TO 'TestUser' @ 'localhost' identificado por 'contraseña';' – sakhunzai

1

Para responder a la otra parte de su pregunta acerca de MySQL Workbench, que estaba teniendo el mismo problema. Pero después de experimentar, descubrí que si creas una función y abres la pestaña de privilegios en la parte inferior, puedes arrastrar la rutina desde la Descripción general del modelo al cuadro de objetos. Desde allí simplemente haga clic en el objeto recién agregado y agregue los permisos que desea para esa función.

Espero que ayude :)

Cuestiones relacionadas