Seu site só mostra uma linha: “Erro ao estabelecer uma conexão com o banco de dados”. O WordPress não conseguiu abrir o banco de dados onde ficam suas páginas, suas configurações e suas contas. Em geral seu conteúdo está intacto: este guia explica como descobrir qual das quatro causas possíveis está em jogo, e como corrigi-la.
wp-config.php. Em geral seu conteúdo está intacto.DB_NAME, DB_USER, DB_PASSWORD e DB_HOST do wp-config.php com os do painel da hospedagem.A cada página exibida, o WordPress abre uma conexão com o banco de dados MySQL ou MariaDB usando quatro informações escritas no wp-config.php, na raiz do site:
define( 'DB_NAME', 'nome_do_banco' );
define( 'DB_USER', 'usuario' );
define( 'DB_PASSWORD', 'senha' );
define( 'DB_HOST', 'localhost' );
“Erro ao estabelecer uma conexão com o banco de dados” quer dizer que essa conexão falhou. Quatro causas produzem a mensagem: dados de acesso que não correspondem mais, um servidor de banco de dados parado ou inacessível, um servidor sobrecarregado ou um banco de dados danificado. As seções a seguir percorrem essas causas da mais simples de verificar à mais rara.
Se o servidor for a causa, abra um chamado na hospedagem informando o horário do início da pane e a mensagem exata. Não há nada a alterar no site enquanto isso.
É a causa mais frequente depois de uma mudança de hospedagem, de uma troca da senha do banco no painel da hospedagem ou de uma restauração. Compare os quatro valores do wp-config.php com a seção de bancos de dados da hospedagem:
DB_NAME e DB_USER: muitas hospedagens colocam antes deles o nome da conta (conta_wordpress). O prefixo faz parte do nome.DB_PASSWORD: na dúvida, defina uma nova senha para o usuário no painel, e copie-a no arquivo.DB_HOST: localhost em muitas hospedagens, mas não em todas. Algumas indicam um nome de servidor ou um endereço, às vezes seguido de uma porta (:3306). O valor exato aparece no painel.Uma senha que contém um apóstrofo (') corta a string PHP que a envolve no wp-config.php. Coloque uma barra invertida antes dele (\'), ou escolha uma senha sem apóstrofo.
O WordPress exibe uma mensagem genérica. O MySQL, por sua vez, diz exatamente o que está errado. Duas formas de consultá-lo com os valores do wp-config.php:
mysql -h localhost -u usuario -p nome_do_banco
Com o WP-CLI, wp db check lê diretamente o wp-config.php e verifica as tabelas com esses dados de acesso.
Coloque este arquivo na raiz do site com um nome difícil de adivinhar, abra-o no navegador e depois exclua-o imediatamente: ele contém a senha do banco de dados.
<?php
mysqli_report(MYSQLI_REPORT_OFF);
$conexao = @mysqli_connect('localhost', 'usuario', 'senha', 'nome_do_banco');
echo $conexao ? 'Conexão bem-sucedida' : 'Falha: ' . mysqli_connect_error();
A primeira linha é importante: desde o PHP 8.1, uma conexão que falha lança uma exceção por padrão, e a página ficaria branca em vez de mostrar a mensagem do MySQL.
| O MySQL responde | A causa | A correção |
|---|---|---|
Access denied for user 'usuario'@'localhost' (using password: YES) | O par usuário e senha é recusado, ou o usuário não tem permissão para se conectar a partir desse host. | Redefinir a senha no painel e copiá-la em DB_PASSWORD; verificar DB_USER. |
Access denied for user 'usuario'@'localhost' to database 'nome_do_banco' | O usuário se conecta, mas não tem permissões nesse banco. | Associar o usuário ao banco de dados no painel da hospedagem, com todos os privilégios. |
Unknown database 'nome_do_banco' | A conexão funciona, mas nenhum banco tem esse nome. | Corrigir DB_NAME, com o prefixo; verificar se o banco ainda existe. |
Too many connections | O servidor atingiu o número máximo de conexões simultâneas. | Ver a seção sobre os erros intermitentes. |
Connection refused ou No such file or directory (código 2002 no PHP), Can't connect to MySQL server (na linha de comando) | Nenhum servidor responde nesse endereço: servidor parado, ou DB_HOST errado. | Verificar DB_HOST no painel; caso contrário, avisar a hospedagem. |
Conexão bem-sucedida | Os dados de acesso estão corretos. | Olhar o próprio banco de dados: próxima seção. |
Quando os dados de acesso estão corretos mas há tabelas danificadas, o site público mostra a mesma mensagem de erro de conexão, e o painel do WordPress uma mensagem mais precisa: “Uma ou mais tabelas de banco de dados estão indisponíveis. O banco de dados pode precisar de reparo.” O WordPress oferece uma ferramenta para isso. Acrescente esta linha ao wp-config.php:
define( 'WP_ALLOW_REPAIR', true );
Depois abra https://www.seu-site.com/wp-admin/maint/repair.php e execute “Reparar o banco de dados”. Retire a linha assim que o reparo terminar: enquanto ela estiver ali, essa página fica acessível a qualquer pessoa, sem login.
Antes de qualquer reparo, exporte o banco de dados (wp db export, ou a aba Exportar do phpMyAdmin). Se o reparo falhar, a hospedagem pode restaurar o banco a partir dos backups dela.
Um erro que aparece em certos horários e some sozinho indica um servidor sobrecarregado, e não um ajuste errado. As causas mais comuns:
wp-login.php ou no xmlrpc.php, visíveis nos logs de acesso da hospedagem.As correções: bloquear as tentativas de login abusivas, instalar um cache de páginas, desativar o xmlrpc.php se nenhum aplicativo o usa, e pedir à hospedagem os logs do período com erro.
Com Serenity by Simafri, criamos seu site profissional, nós o hospedamos, protegemos e mantemos atualizado. Basta nos escrever, nós cuidamos de tudo. Nome de domínio e e-mail profissional incluídos.
Em geral, não. A mensagem diz que o WordPress não conseguiu se conectar ao banco, e não que o banco desapareceu. Se o phpMyAdmin ainda mostra as tabelas do site, suas páginas, posts e configurações estão no lugar.
Porque a nova hospedagem usa outros dados de acesso ao banco: nome do banco, usuário, senha e às vezes endereço do servidor. Copie os valores do novo painel em DB_NAME, DB_USER, DB_PASSWORD e DB_HOST, no wp-config.php.
Reinstalar o WordPress não muda nem os dados de acesso do wp-config.php nem o estado do servidor de banco de dados, que são as causas dessa mensagem. Teste primeiro os dados de acesso, depois o estado do servidor, depois a integridade das tabelas.
De uma sobrecarga, e não de um ajuste: conexões simultâneas demais, um pico de tráfego ou robôs. Os logs de acesso e o consumo de recursos no painel da hospedagem mostram o que acontecia no momento do erro.
Simafri
Vamos falar de seu site
Conte para a gente sobre seu projeto em poucas palavras: responderemos rapidamente.
Obrigado! O seu pedido foi enviado. Responderemos em breve.
Prefere o e-mail? Escreva para a gente em support@simafri.com.