Base de Conhecimento

Erro 1049 MySQL: Unknown database, como resolver

  • mysql, erro 1049, unknown database, banco de dados, mysqldump, sql
  • Usuários acharam útil: 0

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

Arte da Eleven Host: janela de terminal com o título: Erro 1049 MySQL: Unknown database, como resolver

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_names tem padrão 0 no Unix, o que diferencia. Nesse caso, Loja e loja são bancos diferentes.
  • Banco ainda não criado: o nome está certo, mas o CREATE DATABASE ainda não foi rodado nesse servidor.
  • Servidor diferente: você se conectou a um servidor que não é o que tem o banco. O cliente mysql usa localhost como host padrão, e a opção -h escolhe 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ções CREATE DATABASE e USE. Segundo o manual, ao recarregá-lo não é preciso indicar um banco padrão.
  • Sem --databases: o manual diz que nenhum CREATE 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 -h do 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.

Esta resposta lhe foi útil?

Artigos Relacionados