sql >> Base de Datos >  >> RDS >> Mysql

Error de MySQL 1449:el usuario especificado como definidor no existe

Esto suele ocurrir cuando se exportan vistas/desencadenadores/procedimientos de una base de datos o servidor a otro, ya que el usuario que creó ese objeto ya no existe.

Tienes dos opciones:

1. Cambiar el DEFINITOR

Esto es posiblemente más fácil de hacer al importar inicialmente los objetos de su base de datos, eliminando cualquier DEFINER declaraciones del basurero.

Cambiar el definidor más tarde es un poco más complicado:

Cómo cambiar el definidor de vistas

  1. Ejecute este SQL para generar las sentencias ALTER necesarias

    SELECT CONCAT("ALTER DEFINER=`youruser`@`host` VIEW ", 
    table_name, " AS ", view_definition, ";") 
    FROM information_schema.views 
    WHERE table_schema='your-database-name';
    
  2. Copie y ejecute las sentencias ALTER

Cómo cambiar el definidor de procedimientos almacenados

Ejemplo:

UPDATE `mysql`.`proc` p SET definer = '[email protected]%' WHERE definer='[email protected]%'

Tenga cuidado, porque esto cambiará todos los definidores de todas las bases de datos.

2. Crear el usuario que falta

Si ha encontrado el siguiente error al usar la base de datos MySQL:

The user specified as a definer ('someuser'@'%') does not exist`

Entonces puedes resolverlo usando lo siguiente:

GRANT ALL ON *.* TO 'someuser'@'%' IDENTIFIED BY 'complex-password';
FLUSH PRIVILEGES;

De http://www .lynnnayko.com/2010/07/mysql-user-specified-as-definer-root.html

Esto funcionó de maravilla:solo tiene que cambiar someuser al nombre del usuario que falta. En un servidor de desarrollo local, normalmente solo puede usar root .

Considere también si realmente necesita otorgar al usuario ALL permisos o si les vendría bien menos.