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'?
mysql
mysqldump
permissions
kfmfe04
fonte
fonte
Respostas:
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 logado como root @ 'foobar'.
Agora, a solução é que você precise substituir o definidor por esses procedimentos / métodos
então você pode gerar o dump sem o erro.
você pode fazer isso como ..
Cuidado, pois isso mudará todos os definidores para todos os bancos de dados.
Tente....!
ATUALIZAÇÃO em 9 de fevereiro de 2012
Como eu vi o link fornecido pelo @gbn, que é uma resposta dada pelo @Rolando, também pode ser o caso. Por favor, visite o link
EDIT por @RolandoMySQLDBA 16-12-2011 11:20 EDT
Embora arriscada, essa resposta é boa. Apenas para esclarecer: você pode especificar o banco de dados em sua consulta como este:
fonte
UPDATE
mudou a mesa, masmysqldump
não vê-lo:mysqldump: Got error: 1449: The user specified as a definer ('root'@'%') does not exist when using LOCK TABLES
. Mesmo depois de reiniciarmysql
. Estou correndomysql-5.5.31
.update mysql.proc
abordagem realmente funciona.Mais fácil de usar o
--single-transaction
switch:fonte
A solução mais rápida seria recriar o definidor para que ele exista, desde que não crie conflitos com os usuários existentes.
CREATE USER 'root'@'foobar';
fonte
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.fonte