Base de Conhecimento

Erro 1045 MySQL: Access denied for user, como resolver

  • mysql, erro 1045, access denied, ubuntu, senha root, banco de dados
  • Usuários acharam útil: 0

Entenda o erro 1045 do MySQL, leia usuário, host e senha na mensagem, corrija a conta passo a passo e saiba o que fazer se perdeu a senha do root.

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

Arte da Eleven Host: janela de terminal com o título: Erro 1045 MySQL: Access denied for user, como resolver

Capa da Redação Eleven Host para o guia: Erro 1045 MySQL: Access denied for user, como resolver Arte: Eleven Host

O erro 1045 MySQL aparece quando o servidor recusa o login: ele não achou uma conta com aquele usuário, aquele host e aquela senha. Confira os três e as permissões, começando pela própria mensagem, que diz quem tentou entrar e de onde.

Este guia ensina a ler a mensagem, separa as causas possíveis e leva você pelos passos de correção no Ubuntu. Também cobre o caso do WordPress e de outros apps, o que fazer quando a senha do root foi perdida e como evitar o problema depois. A base é o manual do MySQL 8.4, nas páginas sobre problemas de conexão e erros de acesso negado.

O que a mensagem do erro 1045 diz

A forma completa da mensagem é esta:

ERROR 1045 (28000): Access denied for user 'usuario'@'localhost' (using password: YES)

Segundo o manual, a mensagem de acesso negado informa com qual usuário você tentou entrar, de qual host o cliente estava conectando e se você usou senha. Cada pedaço aponta para uma pista:

  • 'usuario'@'localhost': é a conta que o servidor procurou. No MySQL, a conta é formada pelo nome e pelo host, e a tabela de contas precisa ter uma linha que case exatamente com os dois.
  • using password: NO: o manual diz que isso significa que você tentou entrar sem senha. Na linha de comando, falta o -p; em um app, a senha está vazia na configuração.
  • using password: YES: uma senha foi enviada, mas não bateu com aquela conta. Se aparece YES sem você ter digitado nada, pode haver uma senha antiga guardada em um arquivo de opções; teste com --no-defaults para ignorar esses arquivos.

Depois de uma instalação nova, o manual explica que um (using password: NO) para o root indica que uma senha de root já foi definida na instalação e precisa ser informada.

Principais causas do erro 1045

A mensagem não afirma que a senha está errada. O 1045 também aparece quando o host não casa ou quando a conta não existe. Estas são as causas que você deve investigar:

  • Senha errada ou vazia: digitada com erro, trocada em outro lugar ou ausente na configuração do app.
  • Host diferente: a conta existe como 'usuario'@'localhost', mas você conecta de outra máquina, ou o contrário.
  • Usuário inexistente: o nome foi digitado errado ou a conta não chegou a ser criada.
  • Root com auth_socket no Ubuntu: o root do MySQL pode entrar pelo socket do sistema, sem senha, e recusar mysql -u root -p com senha.
  • Conta anônima mais específica: o manual descreve a armadilha de criar 'usuario'@'%' achando que isso libera o localhost. Se existir uma conta anônima ''@'localhost', ela é mais específica e vence.
  • Socket x TCP/IP: para localhost, os programas do MySQL tentam o socket local; com -h 127.0.0.1, a conexão é por TCP/IP, e isso pode casar com outra conta.

Sobre o root no Ubuntu: segundo o manual do plugin auth_socket, ele autentica clientes que conectam da máquina local pelo socket e confere se o nome do usuário do sistema operacional é igual ao nome do usuário do MySQL. Pela rede (TCP/IP), o plugin recusa a conexão.

Como resolver o erro 1045 passo a passo

Siga a ordem abaixo para separar as causas.

1. Entre como administrador do servidor

No Ubuntu, o root do MySQL pode entrar sem senha por meio do sudo:

sudo mysql

Se esse comando entrou, o servidor está funcionando e o problema é a conta que falhou. Se o MySQL ainda nem foi instalado, comece pelo guia Instalar MySQL no Ubuntu: passo a passo na VPS.

2. Veja quais contas existem

SELECT User, Host, plugin FROM mysql.user;

Procure uma linha com o usuário e o host exatamente como na mensagem de erro. Se o usuário aparece só com outro host, esse é o motivo da recusa. A coluna plugin mostra como cada conta autentica, e o root pode aparecer ali com auth_socket.

3. Troque a senha da conta

Se a conta existe com o host certo, defina uma senha nova e longa:

ALTER USER 'usuario'@'localhost' IDENTIFIED BY 'NovaSenhaForte';

Depois atualize a senha no app ou no arquivo de configuração. Para uma conta nova com host diferente, o guia Criar usuário MySQL: como dar permissões com GRANT mostra o CREATE USER e as permissões.

4. Teste o login pelo terminal

Saia do MySQL com EXIT; e teste digitando a senha quando ela for pedida:

mysql -u usuario -p

Segundo o manual, não existe espaço entre -p e a senha quando ela vai no comando, e é melhor não colocá-la ali: use só -p e digite a senha quando o prompt pedir.

5. Compare socket e TCP/IP

Se o app conecta por 127.0.0.1 e o terminal por localhost, o servidor pode usar contas diferentes. Teste a rota do app:

mysql -u usuario -p -h 127.0.0.1

Se esse comando falha e o anterior funciona, crie ou ajuste a conta para o endereço que o app realmente usa.

Precisa de um banco de dados na nuvem? Veja o 11SQL Mini a partir de R$ 9,90/mês e confira na loja o que cada plano inclui. Ver o 11SQL

Erro 1045 conectando de outra máquina

Quando o app está em outro servidor, a mensagem pode mudar para Host ... is not allowed to connect to this MySQL server. Isso quer dizer que não há conta com um host que case com o endereço do cliente, como 198.51.100.20. A solução é criar a conta com esse endereço, e não com o curinga:

CREATE USER 'usuario'@'198.51.100.20' IDENTIFIED BY 'SenhaForteAqui';

Atenção: o manual avisa que a conta com '%' permite conexões de outros hosts e que isso é inseguro. Ele sugere usar o % só para descobrir o host real com SELECT USER() e depois trocar pelo endereço exato.

Para abrir a porta e o acesso pela rede com cuidado, siga o guia Acesso remoto MySQL: como liberar com segurança.

Erro 1045 no WordPress ou em outro app

No WordPress e em outros apps, o 1045 vem de dados de conexão que não batem com a conta. Os campos ficam no arquivo de configuração do app: no WordPress, o wp-config.php traz o nome do banco, o usuário, a senha e o host. Compare cada valor com a conta que você viu no passo 2 e teste a mesma combinação pelo terminal. Se o terminal entra e o app não, a diferença pode estar na senha copiada, em aspas ou em espaço no fim do valor, ou no host usado pelo app.

Quando o site mostra a mensagem em português de que não foi possível estabelecer conexão, o artigo Erro ao estabelecer conexão com o banco de dados: solução cobre as outras causas além das credenciais.

Esqueci a senha do root do MySQL

No Ubuntu, antes de redefinir, tente sudo mysql: se o root usa auth_socket, ele entra sem senha. Só se isso falhar vale seguir o procedimento do manual, que tem riscos. O método do arquivo de inicialização, para sistemas Unix, tem estes passos:

  1. Pare o servidor. O manual usa o comando kill normal e avisa para não usar kill -9. No Ubuntu com o serviço do systemd, o equivalente prático é sudo systemctl stop mysql.
  2. Crie um arquivo de texto com uma única linha, trocando a senha de exemplo por uma sua:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

O manual alerta que o arquivo contém a senha, então não o deixe em um lugar que outros usuários possam ler.

  1. Inicie o servidor apontando para o arquivo, trocando o caminho pelo real:

mysqld --init-file=/caminho/mysql-init &

  1. Quando o servidor subir, apague o arquivo.

Existe ainda o método com --skip-grant-tables, em que você inicia o servidor sem verificar permissões, conecta com mysql, roda FLUSH PRIVILEGES; e só então o ALTER USER. O manual descreve o risco: nesse modo, é possível conectar sem senha e com todos os privilégios. Por isso o servidor também desliga as conexões remotas com skip_networking. Reinicie o servidor normalmente logo depois do reset.

O FLUSH PRIVILEGES só entra nesse método porque as tabelas de permissões não foram carregadas; em um ALTER USER normal ele não é necessário.

Como evitar o erro 1045 de novo

  • Uma conta por app: crie um usuário para cada sistema, com permissão só no banco dele, em vez de usar o root nos apps.
  • Host exato: use localhost quando o app roda no mesmo servidor e o IP do app quando roda em outro.
  • Senha guardada com cuidado: mantenha a senha no arquivo de configuração do app e em um gerenciador, e não em mensagens ou repositórios públicos.
  • Teste pelo terminal: depois de trocar a senha, confirme o login antes de mexer no app.
  • Documente o host: anote o endereço que cada app usa, para o próximo ajuste não virar tentativa e erro.

Precisa de um servidor para os seus projetos? A VPS Plano Bronze sai a partir de R$ 17,00/mês; confira na loja o que cada plano inclui. Ver planos de VPS

Checklist do 1045

  • Li a mensagem e anotei o usuário, o host e o using password.
  • Entrei com sudo mysql para confirmar que o servidor responde.
  • Rodei SELECT User, Host, plugin FROM mysql.user; e achei a conta com o host exato.
  • Troquei a senha com ALTER USER se havia dúvida.
  • Testei com mysql -u usuario -p, digitando a senha no prompt.
  • Comparei localhost com -h 127.0.0.1.
  • Evitei o % e usei o IP exato do app.
  • Atualizei a senha no arquivo de configuração do app.

Perguntas frequentes

O erro 1045 quer dizer só senha errada?

Não. O manual mostra que o mesmo erro aparece quando o host não casa com nenhuma conta ou quando a conta não existe. Por isso a mensagem traz usuário, host e o aviso de senha.

O que muda entre using password YES e NO?

Com NO, nenhuma senha foi enviada. Com YES, uma senha foi enviada e não bateu com a conta.

Por que o root dá 1045 com senha no Ubuntu?

Porque o root pode usar o plugin auth_socket, que confere o usuário do sistema e não a senha. Entre com sudo mysql e crie um usuário próprio para o app.

Preciso rodar FLUSH PRIVILEGES depois do ALTER USER?

Não em um uso normal. Ele aparece no método --skip-grant-tables, em que as tabelas de permissões não estão carregadas.

Esta resposta lhe foi útil?

Artigos Relacionados