Inicio › Foros › Bases de datos › MySQL › MySQL Error Code 1449 The user specified as a definer does not exist
- Este debate tiene 11 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 5 años, 5 meses por Varios.
-
AutorEntradas
-
10/23/2017 a las 08:30 #1467VariosModerador
Hola, estoy tratando de ejecutar esta consulta en MySQL desde una aplicación en PHP:
Transact-SQL123select a.codigo, a.nombre, b.importe, b.referenciafrom factura bleft join vclientes a on a.codigo=b.codigoclienteY me da este error:
Error Code: 1449. The user specified as a definer (‘usuario’@’%’) does not exist.
¿A qué puede ser debido? la consulta SQL creo que está bien formada.
10/23/2017 a las 08:31 #1468alonsojpdSuperadministradorEl usuario con el que has iniciado sesión ¿tiene permisos suficientes sobre las tablas del select para ejecutar la consulta en MySQL? ¿usas vistas en la consulta SQL? ¿el usuario tiene acceso a las vistas?
10/23/2017 a las 08:33 #1469VariosModeradorCreo que sà tiene permisos, lo cree de esta forma en su momento:
GRANT SELECT, INSERT, UPDATE, DELETE ON bd.* TO ‘usuario’@’%’;
10/23/2017 a las 08:33 #1470VariosModeradorAhh y sà uso vistas, vclientes es una vista.
10/23/2017 a las 08:38 #1471alonsojpdSuperadministradorIntenta ejecutar este comando para añadir permisos al usuario «usuario» para ejecutar vistas:
Transact-SQL12GRANT SHOW VIEW ON bd.* TO 'usuario'@'%';FLUSH PRIVILEGES;10/23/2017 a las 08:45 #1472VariosModeradorHe ejecutado lo que me dices y sigue dando el mismo error 1449.
10/23/2017 a las 08:46 #1473alonsojpdSuperadministrador¿Utilizas algún procedimiento almacenado (stored procedure)?
10/23/2017 a las 08:47 #1474VariosModeradorSÃ, uso uno para la vista vcliente.
10/23/2017 a las 08:52 #1475alonsojpdSuperadministradorEntonces ejecuta también este otro comando para agregar permisos de ejecución de procedimientos almacenados al usuario «usuario»:
12GRANT EXECUTE ON bd.* TO 'usuario'@'%';FLUSH PRIVILEGES;10/23/2017 a las 09:44 #1476VariosModeradorLo he ejecutado también y me sigue dando el mismo error de nuevo, el 1449.
10/23/2017 a las 10:07 #1477alonsojpdSuperadministradorEn ese caso tienes que revisar el procedimiento almacenado y la vista por si tiene alguna referencia «define xxx@xxx» que no tengas establecida en la seguridad del usuario.
Por ejemplo, si tienes este procedimiento:
Transact-SQL12CREATE DEFINER='consulta'@'192.168.%'PROCEDURE 'insertar_facturas'(IN ...)Debes tener también permisos para el usuario «consulta» para el rango de IP 192.168.%, con la instrucción:
Transact-SQL12GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE, SHOW VIEW ON consulta.* TO 'bd'@'192.168.%';flush privileges;Obviamente en el GRANT establecerás los permisos que quieras que tenga el usuario: select, insert, update, delete, execute, show view.
10/23/2017 a las 10:14 #1478VariosModeradorRevisando era la vista eclientes que tenÃa un define, como has dicho, apuntando a un usuario e IP que cambié hace unos dÃas.
Solucionado gracias a tus explicaciones.
Muchas gracias.
-
AutorEntradas
- Debes estar registrado para responder a este debate.