Quando executo o mysqldump, recebo um erro:
mysqldump: Got error: 1449: The user specified as a definer ('root'@'foobar') does not exist when using LOCK TABLES
Isso faz sentido porque foobar
é uma máquina legada que não existe mais.
Como altero o definidor de todas as minhas tabelas para 'root'@'localhost'?
O que eu acho é que o banco de dados que você está tentando despejar contém procedimentos/métodos que foram definidos por um usuário enquanto conectado como root@'foobar'.
Agora a solução é que você tem que substituir o definidor para esses procedimentos/métodos
então você pode gerar o dump sem o erro.
você pode fazer assim..
Tenha cuidado, pois isso alterará todos os definidores de todos os bancos de dados.
Tente....!
ATUALIZAÇÃO em 9 de fevereiro de 2012
Como eu vi o link dado pelo @gbn que é uma resposta dada pelo @Rolando que também pode ser o Case. Por favor, visite o link
EDITAR por @RolandoMySQLDBA 16/12/2011 11:20 EDT
Embora arriscada, esta resposta é boa. Apenas para esclarecer: Você pode especificar o banco de dados em sua consulta assim:
Mais fácil de usar o
--single-transaction
interruptor:A solução mais rápida seria apenas recriar o definidor para que ele exista, desde que não crie nenhum conflito com os usuários existentes.
CREATE USER 'root'@'foobar';
Exporte todas as visualizações do banco de dados
<DB>
:ou:
Edite
views.sql
e recrie-os:Especifique
-u
e-p
alterne se necessário.