Erro 1049 MySQL: Unknown database, como resolver
Entenda o erro 1049 do MySQL, confira o nome do banco com SHOW DATABASES, crie o banco com CREATE DATABASE e veja o que muda ao importar um dump.
Por Redação Eleven Host · @robson.direitodigital · 30 de outubro de 2026 · 9 min de leitura

Capa da Redação Eleven Host para o guia: Erro 1049 MySQL: Unknown database, como resolver Arte: Eleven Host
O erro 1049 MySQL, Unknown database, diz que o banco com aquele nome não existe no servidor a que você se conectou. Para resolver, confira o nome com SHOW DATABASES e crie o banco se ele realmente faltar.
Este guia mostra como ler a mensagem, as situações em que o erro aparece, como conferir o nome, como criar o banco, o que fazer ao importar um dump e onde olhar no código do site ou do aplicativo. Os fatos vêm do manual do MySQL; os exemplos usam o banco fictício loja e o usuário usuario. Troque pelos seus.
O que a mensagem diz
Na referência de erros do MySQL, o erro 1049 tem o símbolo ER_BAD_DB_ERROR, o SQLSTATE 42000 e esta mensagem:
Unknown database '%s'
O %s é substituído pelo nome do banco que você pediu. Um exemplo de como a mensagem pode aparecer no cliente de linha de comando (formato ilustrativo, montado com o número, o SQLSTATE e o texto da referência):
ERROR 1049 (42000): Unknown database 'loja'
Lendo por partes:
- 1049 e ER_BAD_DB_ERROR: o número e o símbolo do erro.
- 42000: o SQLSTATE informado pela referência.
- Unknown database: banco desconhecido, isto é, o servidor não conhece o nome que você passou.
- 'loja': o nome que o servidor procurou e não achou.
O erro 1049 trata do nome do banco. Ele aparece quando o nome passado, no comando ou na conexão, não existe no servidor que respondeu.
Esse erro tem vizinhos que se parecem com ele, e vale não confundir. O 1046 (No database selected) diz que nenhum banco foi escolhido. O 1044 (Access denied for user ... to database ...) indica que o banco pode existir, mas o usuário não tem acesso a ele. No 1049, o servidor não conhece o nome.
Causas do erro 1049
A referência de erros dá só a mensagem. As causas abaixo são deduzidas das páginas do manual sobre como o MySQL guarda e escolhe bancos, e valem como lista para você conferir, um item por vez:
- Nome escrito errado: uma letra trocada ou faltando no
USE, no comando do cliente ou na conexão do aplicativo. - Maiúsculas e minúsculas: o MySQL guarda cada banco como uma pasta no diretório de dados. Segundo o manual, os nomes de banco não diferenciam maiúsculas e minúsculas no Windows, mas diferenciam em boa parte dos sistemas Unix. A variável
lower_case_table_namestem padrão 0 no Unix, o que diferencia. Nesse caso,Lojaelojasão bancos diferentes. - Banco ainda não criado: o nome está certo, mas o
CREATE DATABASEainda não foi rodado nesse servidor. - Servidor diferente: você se conectou a um servidor que não é o que tem o banco. O cliente
mysqlusalocalhostcomo host padrão, e a opção-hescolhe outro. - Nome errado na configuração do aplicativo: o site ou o aplicativo passa à conexão um nome que não existe no servidor.
Sobre as maiúsculas, o manual avisa que a lower_case_table_names só pode ser configurada quando o servidor é inicializado, e que mudá-la depois disso é proibido. Por isso, o caminho prático é escrever o nome do banco exatamente como ele foi criado.
Passo a passo: conferir o nome com SHOW DATABASES
O primeiro passo é ver quais bancos existem no servidor ao qual você está conectado. Conecte sem escolher um banco e liste:
mysql -u usuario -p -e "SHOW DATABASES;"
A opção -p sem valor faz o mysql perguntar a senha, e a -e executa o comando e sai. Dentro do cliente, o comando é o mesmo, sem o mysql -e. Para filtrar por parte do nome, o SHOW DATABASES aceita LIKE:
SHOW DATABASES;
SHOW DATABASES LIKE 'loja%';
Compare o nome que aparece na lista com o nome da mensagem de erro, letra por letra e respeitando maiúsculas.
Há um cuidado importante. Segundo o manual, você vê só os bancos para os quais tem algum privilégio, a não ser que tenha o privilégio global de SHOW DATABASES. Então um banco que não aparece na lista pode não existir, ou o usuário pode não ter acesso a ele. Para separar os dois casos, use um usuário com mais acesso ou confirme com quem administra o servidor. Se o problema for acesso, o guia Erro 1045 MySQL: Access denied for user, como resolver trata da negação de acesso na conexão.
Precisa de um banco de dados na nuvem? O 11SQL Mini sai a partir de R$ 9,90/mês; confira na loja o que cada plano inclui. Ver planos de banco de dados
Criar o banco e dar a permissão
Se o banco não existe e deveria existir, crie-o. A sintaxe do manual aceita a cláusula IF NOT EXISTS, que evita erro quando o banco já existe, e opções de conjunto de caracteres:
CREATE DATABASE IF NOT EXISTS loja DEFAULT CHARACTER SET utf8mb4;
Para criar, o usuário precisa do privilégio CREATE sobre o banco. O manual diz que, sem o IF NOT EXISTS, ocorre erro se o banco já existir. Esse é o erro 1007, Can't create database; database exists, para o qual a própria referência sugere usar o IF NOT EXISTS.
Depois de criar, o usuário da sua aplicação precisa ter acesso ao banco. O guia Criar usuário MySQL: como dar permissões com GRANT mostra como criar o usuário e liberar o banco para ele. Para começar a usar o banco criado, escolha-o com USE ou passe o nome na conexão:
USE loja;
mysql -u usuario -p loja
mysql -u usuario -p -D loja
O USE define o banco padrão para os comandos seguintes, até o fim da sessão ou até outro USE. Nas duas formas de linha de comando, o nome é o do banco que você quer usar, e o 1049 aparece quando esse nome não existe no servidor. Se o servidor ainda não tem o MySQL, o guia Instalar MySQL no Ubuntu: passo a passo na VPS mostra a instalação.
Ao importar um dump
O erro 1049 pode aparecer ao importar um backup quando o banco de destino não existe, e o que o dump traz muda o que você precisa fazer. O mysqldump tem formas diferentes de gerar o dump:
mysqldump -u usuario -p --databases loja > loja.sql
mysqldump -u usuario -p loja > loja.sql
- Com
--databases(ou--all-databases): o dump inclui as instruçõesCREATE DATABASEeUSE. Segundo o manual, ao recarregá-lo não é preciso indicar um banco padrão. - Sem
--databases: o manual diz que nenhumCREATE DATABASEé escrito. Para recarregar, crie o banco primeiro e depois importe para ele.
Para um dump feito sem --databases, a sequência da documentação é esta:
mysqladmin -u usuario -p create loja
mysql -u usuario -p loja < loja.sql
Também dá para fazer tudo dentro do cliente mysql, com o source:
CREATE DATABASE IF NOT EXISTS loja;
USE loja;
source loja.sql
Se você rodar mysql -u usuario -p loja < loja.sql sem ter criado o banco loja, o servidor responde com o erro 1049. O comando mysql < loja.sql, sem indicar banco, só funciona para dump que contém CREATE DATABASE e USE. O guia Erro 1146 MySQL: tabela não existe, como resolver fica como leitura à parte, caso depois apareça uma tabela que não existe.
No código do site ou do aplicativo
Quando o erro vem de um site ou de um aplicativo, e não do terminal, o nome do banco está numa configuração da própria aplicação. Esta página não cobre os arquivos de configuração de nenhum framework. O princípio é este: o nome informado na conexão tem de ser igual ao nome que aparece no SHOW DATABASES do servidor que o aplicativo usa.
Confira três pontos, nesta ordem:
- O nome do banco: compare, letra por letra e com as maiúsculas, com a lista do
SHOW DATABASES. - O servidor: veja se o aplicativo se conecta ao mesmo servidor em que você criou o banco. A opção
-hdo cliente mostra a ideia: o padrão élocalhost, e um servidor remoto precisa ser indicado. - O usuário: se o banco existe e o erro mudar para o 1044, o problema passou a ser permissão.
Teste a mesma combinação pelo terminal, com o mesmo usuário e o mesmo nome de banco. Se o terminal conecta e o aplicativo não, vale procurar a diferença na configuração do aplicativo. Se o terminal também dá 1049, o banco não existe naquele servidor.
Checklist do erro 1049
- Leia a mensagem:
Unknown database 'nome'mostra o nome que o servidor não achou. - Liste os bancos com
SHOW DATABASES;e compare o nome, respeitando maiúsculas. - Lembre que a lista só mostra os bancos a que o usuário tem acesso.
- Se o banco falta, crie com
CREATE DATABASE IF NOT EXISTS. - Dê ao usuário da aplicação a permissão sobre o banco, como no guia do GRANT.
- Ao importar, confira se o dump foi gerado com
--databases; se não foi, crie o banco antes. - No aplicativo, compare o nome do banco e o servidor da conexão com os do terminal.
- Não confunda com o 1046 (nenhum banco escolhido) nem com o 1044 (sem acesso ao banco).
Quer conhecer a VPS da Eleven Host? O Plano Bronze sai a partir de R$ 17,00/mês; confira na loja o que cada plano inclui. Conhecer os planos de VPS
Perguntas frequentes
O que significa o erro 1049 do MySQL?
Que o banco com aquele nome não existe no servidor a que você se conectou. A mensagem é Unknown database seguida do nome procurado.
Como resolver o erro 1049?
Liste os bancos com SHOW DATABASES e compare o nome. Se o nome estiver errado, corrija. Se o banco não existir, crie com CREATE DATABASE IF NOT EXISTS.
O erro 1049 é problema de senha ou de permissão?
Não é de permissão: a falta de acesso a um banco é o erro 1044. O 1049 indica que o servidor não conhece o nome do banco.
Maiúsculas e minúsculas importam no nome do banco?
Depende do sistema. O manual diz que os nomes não diferenciam maiúsculas e minúsculas no Windows, mas diferenciam em boa parte dos sistemas Unix, onde o padrão da lower_case_table_names é 0.
Por que recebo o erro 1049 ao importar um dump?
Quando o banco de destino não existe no servidor. Um dump gerado sem --databases não traz o CREATE DATABASE, então crie o banco antes de importar.