Base de Conhecimento

Importar banco de dados MySQL: passo a passo e erros comuns

  • importar banco de dados mysql, mysql, mysqldump, banco de dados, tutorial
  • Usuários acharam útil: 0

Do arquivo .sql ao banco funcionando: como exportar com cuidado, importar no mesmo servidor ou em outro, usar o PowerShell e entender os erros que aparecem.

Por Redação Eleven Host · @robson.direitodigital · 27 de outubro de 2026 · 7 min de leitura

Arte da Eleven Host: janela de terminal com o título: Importar banco de dados MySQL: passo a passo e erros comuns

Capa da Redação Eleven Host para o guia: Importar banco de dados MySQL: passo a passo e erros comuns Arte: Eleven Host

Para importar banco de dados MySQL, você precisa de um arquivo .sql gerado por exportação, de um banco de destino e de um comando do cliente mysql. O comando certo depende de uma coisa que está no começo do arquivo.

Este guia mostra como exportar com cuidado, importar no mesmo servidor e em servidor remoto, e o que fazer quando aparece erro. Os comandos seguem o manual do MySQL 8.4. Troque nome_do_banco, usuario e endereco-do-servidor pelos seus dados.

O guia Banco de dados MySQL na nuvem: guia para começar traz um roteiro curto de migração. Aqui o foco é só a importação, com os casos e os erros em detalhe.

Quando você precisa importar um banco

A importação aparece em três situações comuns: mudar o site ou o sistema para outro servidor, restaurar um backup depois de um problema e levar os dados para um banco gerenciado. Nos três casos o ponto de partida é o mesmo: um arquivo .sql com os comandos que recriam tabelas e registros.

Esse arquivo é um texto. Importar é pedir ao cliente mysql que leia esse texto e execute os comandos dele no banco de destino.

Antes de começar: olhe o início do arquivo

O arquivo veio com ou sem CREATE DATABASE e USE? Abra o começo dele num editor de texto e procure essas duas linhas. A resposta decide o comando de importação.

  • Sem essas linhas: o dump foi gerado de um único banco, sem a opção --databases. Na importação você precisa dizer em qual banco quer gravar, e esse banco tem de existir antes. Dá para importar num banco de nome diferente do original.
  • Com essas linhas: o dump foi gerado com --databases ou --all-databases. Ele cria o banco e passa a usá-lo sozinho, então a importação devolve os dados ao banco de origem, com o mesmo nome.

Se o arquivo vier em .gz, descompacte-o antes de olhar o início.

Como exportar direito

Se você ainda tem acesso ao banco antigo, gere o dump com estas opções.

  1. Para um site ou loja no ar, use mysqldump --single-transaction -u usuario -p nome_do_banco > dump.sql. A opção --single-transaction tira uma cópia consistente das tabelas InnoDB sem travá-las.
  2. Se quer levar o nome do banco junto, acrescente --databases: mysqldump --single-transaction --databases nome_do_banco -u usuario -p > dump.sql. O arquivo passa a incluir CREATE DATABASE e USE.
  3. Restrinja o acesso ao arquivo: chmod 600 dump.sql.

O -p pede a senha no terminal. Não escreva a senha dentro do comando.

Um dump traz os dados do negócio inteiro. Não deixe esse arquivo em /tmp nem em pasta pública do site, onde outras pessoas podem baixá-lo ou lê-lo.

Arquivo grande: comprima na exportação

Dumps de bases grandes podem ficar pesados para guardar e transferir. Comprima com gzip na hora de exportar e descomprima na hora de importar:

  1. Exportar: mysqldump --single-transaction -u usuario -p nome_do_banco | gzip > dump.sql.gz
  2. Importar: gunzip < dump.sql.gz | mysql -u usuario -p nome_do_banco

O segundo comando manda o texto descomprimido direto para o mysql, sem criar um arquivo grande no disco.

Importar no mesmo servidor

Use este caminho quando o MySQL está na máquina em que você está logado. Primeiro crie o banco de destino, depois importe.

  1. Crie o banco: mysqladmin create nome_do_banco
  2. Importe: mysql nome_do_banco < dump.sql

Se preferir trabalhar dentro do cliente, entre com mysql -u usuario -p e rode:

  1. CREATE DATABASE IF NOT EXISTS nome_do_banco;
  2. USE nome_do_banco;
  3. source dump.sql

Se o seu dump foi gerado com --databases, ele já tem o CREATE DATABASE e o USE. Nesse caso não precisa criar nada antes: importe com mysql -u usuario -p < dump.sql.

Procura um banco de dados gerenciado? O 11SQL Mini sai a partir de R$ 9,90/mês; confira na loja quais bancos e recursos cada plano inclui. Ver bancos de dados

Importar em servidor remoto ou banco gerenciado

Quando o banco de destino está em outra máquina, o cliente mysql conecta pela rede. Informe o endereço do servidor com -h:

  • mysql -h endereco-do-servidor -u usuario -p nome_do_banco < dump.sql

Use o usuário criado para a aplicação, com permissão só sobre esse banco, e não o usuário administrador. O -p pede a senha; não a escreva no comando.

Em banco gerenciado, confira com o provedor os dados de conexão (endereço, usuário e nome do banco). O banco de destino também precisa existir antes da importação, a não ser que o seu dump traga o CREATE DATABASE. Nesse caso, confirme com o provedor se o seu usuário tem permissão para criar bancos.

Rodar o comando sem olhar o início do arquivo é um tropeço evitável. Ler antes ajuda a evitar dados gravados no banco errado.

Importar no Windows com PowerShell

No PowerShell, o símbolo < é reservado e o redirecionamento do jeito Linux não funciona. O manual do MySQL indica chamar o Prompt de Comando por dentro do PowerShell:

  • cmd.exe /c "mysql -u usuario -p nome_do_banco < dump.sql"

O restante é igual: o banco precisa existir e o -p pede a senha. Rode o comando na pasta onde está o dump.sql ou informe o caminho completo do arquivo.

Erros comuns e o que olhar

  • Unknown database: o banco de destino não foi criado ou o nome está errado. Crie o banco, confira a grafia e rode de novo.
  • Access denied: usuário, senha ou permissão incorretos. Confira os três e veja se o usuário tem acesso a esse banco.
  • Erro de DEFINER ou de privilégio em banco gerenciado: o dump traz views ou rotinas criadas por outro usuário. Confira com o provedor como tratar esses objetos.
  • Falha por causa de SET @@GLOBAL.gtid_purged: em dump parcial, essa linha pode derrubar a importação. Gere o dump de novo com --set-gtid-purged=OFF.
  • Acentos trocados por símbolos: o conjunto de caracteres do dump e o do banco de destino são diferentes. Compare os dois antes de repetir a importação.

Quando algo falha no meio, leia a mensagem inteira: se a mensagem trouxer o número da linha do arquivo, abra o dump nessa linha para ver o que está ali.

Depois de importar

Terminar a importação sem erro não encerra o trabalho. Siga esta ordem:

  1. Troque os dados de conexão do sistema (endereço, usuário, senha e nome do banco) para apontar ao banco novo.
  2. Teste as telas principais: login, listagens e uma gravação de teste.
  3. Mantenha o banco antigo intacto até confirmar que tudo funciona.
  4. Apague o dump.sql depois de importar, para não deixar uma cópia dos dados parada num servidor.

Se o destino for uma VPS com WordPress, o guia Instalar WordPress na VPS: passo a passo com Nginx mostra onde o banco entra na montagem do site.

Checklist da importação

  • Abri o início do arquivo e sei se ele tem CREATE DATABASE e USE.
  • O banco de destino existe, ou o dump o cria.
  • Usei o usuário da aplicação, não o administrador.
  • A senha foi digitada no -p, não escrita no comando.
  • O dump tem chmod 600 e não está em /tmp nem em pasta pública.
  • Testei as telas principais com o sistema apontando para o banco novo.
  • O banco antigo continua intacto.
  • Apaguei o dump depois de confirmar.

Quer rodar o banco em um servidor seu? Veja os planos de VPS a partir de R$ 17,00/mês, no Plano Bronze. Ver planos de VPS

Perguntas frequentes

Posso importar o dump num banco com nome diferente do original?

Pode, quando o dump foi gerado sem --databases. Nesse caso o arquivo não traz o nome do banco, então você escolhe o destino no comando. Se o arquivo tem CREATE DATABASE e USE, a importação volta para o nome de origem.

O banco de destino precisa existir antes?

Sim, quando o dump não traz CREATE DATABASE. Crie com mysqladmin create nome_do_banco ou com CREATE DATABASE IF NOT EXISTS nome_do_banco; dentro do cliente.

Como escrevo a senha no comando de importação?

Não escreva. Use -p sem valor e o cliente pergunta a senha no terminal.

O comando com o sinal de menor não funciona no PowerShell. E agora?

O PowerShell reserva o símbolo <. Chame o Prompt de Comando com cmd.exe /c "mysql -u usuario -p nome_do_banco < dump.sql".

O que fazer se a importação der erro no meio?

Leia a mensagem completa, ache o erro na lista deste guia e corrija a causa. Depois confira se o banco de destino ficou com tabelas pela metade; se ficou, o mais seguro é repetir a importação do começo em um banco de destino vazio.

Se o destino for uma VPS nova, o guia Como montar servidor VPS: do plano ao primeiro site traz o caminho do plano ao primeiro site.

Esta resposta lhe foi útil?

Artigos Relacionados