Como importar um banco de dados pelo phpMyAdmin no cPanel, o que fazer quando o arquivo .sql passa do limite e como resolver os erros comuns.
Importar um banco é o passo principal de quase toda migração de site: você exporta um arquivo .sql (ou .sql.gz) do servidor antigo e carrega no banco novo. No cPanel, isso se faz pelo phpMyAdmin, direto do navegador.
Antes de começar
- Crie o banco e o usuário no cPanel antes de importar. O phpMyAdmin da hospedagem não cria bancos: o arquivo é importado para dentro de um banco que já existe.
- Tenha o arquivo de exportação em
.sql,.sql.gz,.sql.bz2ou.sql.zip(o zip deve conter um único arquivo.sql). - Se o banco de destino já tem tabelas com os mesmos nomes, faça um backup dele antes (aba Exportar).
Como importar o banco pelo phpMyAdmin
- Abra o phpMyAdmin. No cPanel, seção Databases, clique em phpMyAdmin. Ele abre já conectado, sem pedir senha.
- Selecione o banco de destino na coluna da esquerda, clicando no nome dele (com o prefixo, como
minhaconta_loja). Esse passo é o que mais se esquece. - Clique na aba Importar no topo.
- Escolha o arquivo. Em Arquivo a importar, clique em Escolher arquivo e selecione o
.sqlou.sql.gz. Ao lado aparece o tamanho máximo aceito: anote esse número. - Deixe as demais opções no padrão: formato SQL e a caixa de importação parcial marcada.
- Clique em Importar (em versões antigas, Executar) no fim da página e aguarde. Não feche a aba. No fim aparece a mensagem verde de importação concluída, com o número de consultas executadas.
Arquivo maior que o limite do phpMyAdmin: as alternativas
O limite que aparece na tela é do envio pelo navegador e vale para o arquivo do jeito que você enviar. Por isso a primeira saída é a mais simples:
1. Compacte o arquivo
Arquivos SQL são texto e encolhem muito: um .sql de 200 MB costuma virar algo entre 20 e 40 MB em .sql.gz. O phpMyAdmin descompacta sozinho. No computador, use o 7-Zip (Windows, formato gzip) ou o terminal (Mac e Linux):
gzip -k backup.sql
O comando cria o backup.sql.gz e mantém o original. O nome precisa terminar em .sql.gz para o phpMyAdmin reconhecer.
2. Divida a exportação em partes
Na origem, exporte as tabelas em grupos (na aba Exportar, escolha o método Personalizado e selecione só algumas tabelas por vez). Em sites grandes, as tabelas pesadas costumam ser poucas, como logs, estatísticas e sessões, e às vezes nem precisam ser migradas.
3. Importe pela linha de comando (se o seu plano tiver SSH)
Envie o arquivo por FTP para uma pasta fora do public_html e rode, trocando pelos seus dados:
mysql -u minhaconta_lojauser -p minhaconta_loja < backup.sql
Para arquivo compactado:
gunzip < backup.sql.gz | mysql -u minhaconta_lojauser -p minhaconta_loja
A senha pedida é a do usuário do banco. Pela linha de comando não há limite de envio nem de tempo do navegador.
4. Peça para o suporte importar
Envie o arquivo por FTP para a sua conta (fora do public_html, para ninguém baixar pelo navegador) e abra um chamado informando o caminho do arquivo e o nome do banco de destino.
.sql dentro do public_html. Qualquer pessoa que adivinhar o nome baixa o banco inteiro, com e-mails e senhas dos seus usuários. Apague o arquivo da hospedagem assim que terminar.Problemas comuns
#1046 - No database selected
Você clicou em Importar sem selecionar o banco na coluna da esquerda. Selecione e importe de novo.
#1044 - Access denied for user ... to database
O arquivo tem um comando CREATE DATABASE ou USE nome_antigo, com o nome do banco do servidor anterior. Abra o .sql num editor de texto (Notepad++, VS Code), apague essas linhas do começo e importe de novo.
#1050 - Table already exists ou #1062 - Duplicate entry
O banco de destino já tinha essas tabelas, provavelmente de uma importação anterior pela metade. Faça backup, apague as tabelas (marque todas e escolha a opção de eliminar, Drop) e importe de novo.
#1227 - Access denied; you need (at least one of) the SUPER privilege(s)
O arquivo traz DEFINER=`usuario`@`localhost` em views, triggers ou procedures, com um usuário que não existe aqui. Remova o trecho DEFINER=… dessas linhas, ou exporte de novo na origem sem essa informação.
#1273 - Unknown collation: 'utf8mb4_0900_ai_ci'
O banco foi exportado de um MySQL 8 e o servidor de destino não reconhece essa collation. Troque no arquivo por utf8mb4_unicode_ci (no Mac ou Linux: sed -i.bak 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' backup.sql, que também guarda uma cópia .bak do original) e importe de novo.
A importação parou no meio ou a página ficou em branco
Estourou o tempo. Com a importação parcial marcada, o phpMyAdmin avisa onde parou: envie o mesmo arquivo de novo e preencha o campo de pular consultas com o número informado. Se acontecer sempre, use uma das alternativas para arquivos grandes.