Esta pergunta é um pouco antiga, mas acabei de perder algumas horas tentando resolver exatamente o mesmo problema, então acho que uma explicação clara pode ser útil para alguém no futuro ...
Para ir direto ao assunto:O problema está no campo DEFINER no seu dump do mysql. Parece algo como:
/*!50013 DEFINER=`some_user`@`localhost` SQL SECURITY DEFINER */
O problema é que este *[email protected] * sempre será codificado para a conta de usuário que foi usada para criar a visualização no banco de dados original e NÃO o usuário que você usou para exportar ou importar o banco de dados como seria de esperar (ou pelo menos eu fiz). E posteriormente, durante a importação, esse usuário será usado para recriar a visualização.
Portanto, você pode exportar/importar como root, mas se o banco de dados original estiver sendo executado em outro usuário e não tiver direitos CREATE VIEW no novo banco de dados, a importação falhará.
Você tem duas soluções simples:
- Pesquise e substitua todas as referências a
some_user
@localhost
em seu arquivo de despejo com seu novo usuário (o que você usa para importar o despejo, por exemplo, example@ sqldat. com ) - Ou você pode conceder a *some_user* os direitos apropriados no novo banco de dados para que as visualizações possam ser criadas na conta dele
De qualquer forma, resolverá o problema, mas acho que a primeira abordagem é muito melhor e mais limpa, pois você não precisa se preocupar com vários usuários no futuro.