Cuando ejecuto mysqldump, aparece un error:
mysqldump: Got error: 1449: The user specified as a definer ('root'@'foobar') does not exist when using LOCK TABLES
Esto tiene sentido porque foobar
es una máquina heredada que ya no existe.
¿Cómo cambio el definidor de todas mis tablas a 'root' @ 'localhost'?
mysql
mysqldump
permissions
kfmfe04
fuente
fuente
Respuestas:
Lo que creo es que la base de datos que está intentando volcar contiene procedimientos / métodos que fueron definidos por un usuario mientras estaba conectado como root @ 'foobar'.
Ahora la solución es que tienes que reemplazar el definidor para esos procedimientos / métodos
entonces puede generar el volcado sin el error.
puedes hacer esto como ...
Tenga cuidado, porque esto cambiará todos los definidores para todas las bases de datos.
Intentalo....!
ACTUALIZACIÓN el 9 de febrero de 2012
Como vi el enlace dado por @gbn que es una respuesta dada por @Rolando que también puede ser el caso. Por favor visite el enlace
EDITAR por @RolandoMySQLDBA 2011-12-16 11:20 EDT
Si bien es arriesgado, esta respuesta es buena. Solo para aclarar: puede especificar la base de datos en su consulta de esta manera:
fuente
UPDATE
cambiado la mesa, peromysqldump
no verlo:mysqldump: Got error: 1449: The user specified as a definer ('root'@'%') does not exist when using LOCK TABLES
. Incluso después de reiniciarmysql
. Estoy corriendomysql-5.5.31
.update mysql.proc
enfoque de hecho funciona.Más fácil de usar el
--single-transaction
interruptor:fuente
La solución más rápida sería volver a crear el definidor para que exista, siempre que no cree ningún conflicto con los usuarios existentes.
CREATE USER 'root'@'foobar';
fuente
Exporte todas las vistas de la base de datos
<DB>
:o:
Edítelos
views.sql
y vuelva a crearlos:Especifique
-u
y-p
cambie si es necesario.fuente