Erro ao estabelecer ligação à base de dados no WordPress: como resolver

"Error establishing a database connection" significa que o WordPress (os ficheiros PHP) está a funcionar, mas não consegue falar com o MySQL onde vive todo o conteúdo. Só há três explicações possíveis: as credenciais estão erradas, o servidor de base de dados está em baixo, ou a base de dados está corrompida. Este guia diz como identificar qual das três — e resolver cada uma.

Primeiro teste: o wp-admin diz mais do que a homepage

Abra oseudominio.pt/wp-admin. Se em vez do erro genérico aparecer "One or more database tables are unavailable. The database may need to be repaired" — salte diretamente para o cenário 3 (corrupção). Se o erro é igual em todo o lado, comece pelo cenário 1.

Cenário 1 — Credenciais erradas no wp-config.php

É a causa mais comum depois de migrações, restauros ou mudanças no alojamento. O ficheiro wp-config.php na raiz do site guarda quatro valores:

DB_NAME (nome da base de dados), DB_USER (utilizador), DB_PASSWORD (password) e DB_HOST (endereço do servidor MySQL — normalmente localhost, mas alguns alojamentos usam um hostname próprio).

Como confirmar: no painel do alojamento, abra a secção de bases de dados MySQL e compare o nome da base e o utilizador com o que está no wp-config.php. Diferenças de um caráter (prefixos como u123456_) são o erro clássico. Se tudo parece certo, redefina a password do utilizador da base de dados no painel e atualize o wp-config.php com a nova — elimina a dúvida.

Atenção pós-migração: se acabou de mudar de alojamento, o DB_HOST do fornecedor antigo pode não ser o do novo. Confirme na documentação ou no suporte. (Migrações sem este tipo de sustos são possíveis — veja como mudar de alojamento sem downtime.)

Cenário 2 — O servidor MySQL está em baixo

Se nada mudou no site e o erro apareceu do nada, o mais provável é o serviço MySQL ter caído — por falta de memória no servidor, pico de tráfego ou problema do alojamento.

Em alojamento partilhado: não controla o MySQL. Verifique a página de estado do alojamento e abra ticket de suporte. Se acontece com frequência, é sinal de servidor sobrelotado — motivo legítimo para mudar de alojamento.

Em VPS/servidor dedicado: verifique e reinicie o serviço (systemctl status mysql / systemctl restart mysql). Se o MySQL morre repetidamente, a causa típica em VPS pequenos é falta de RAM: o sistema mata o MySQL para sobreviver (procure "Out of memory" em /var/log/syslog). As soluções passam por otimizar a configuração do MySQL, adicionar swap ou aumentar o servidor — o tipo de afinação coberto na nossa otimização de bases de dados MySQL.

Cenário 3 — Base de dados corrompida

Tabelas corrompem-se por paragens abruptas do servidor ou disco cheio. O WordPress tem um modo de reparação embutido:

1. Adicione ao wp-config.php: define('WP_ALLOW_REPAIR', true);
2. Abra oseudominio.pt/wp-admin/maint/repair.php e escolha "Reparar base de dados".
3. Remova a linha do wp-config.php no fim — enquanto existir, aquela página é acessível a qualquer pessoa sem login.

Alternativa no phpMyAdmin: selecionar as tabelas e usar a operação "Repair table". Se a reparação falhar ou os dados aparecerem incompletos, o caminho seguro é restaurar o backup mais recente — o momento em que descobre se os seus backups alguma vez foram testados.

E se for intermitente?

O erro que aparece e desaparece tem quase sempre a mesma raiz: o MySQL a ser morto por falta de recursos nos picos — demasiados visitantes, plugins com queries pesadas, tabelas gigantes sem otimização, ou um site vizinho a monopolizar o servidor partilhado. Resolver de vez exige olhar para as queries e para o dimensionamento, não recarregar a página e esperar o melhor. Sem visibilidade, cada episódio é uma surpresa: monitorização de uptime diz-lhe quando, com que frequência e durante quanto tempo o site esteve realmente em baixo.

Base de dados a falhar e o site em baixo?

Repomos o site online e tratamos da causa: reparação de tabelas, otimização de MySQL, dimensionamento de recursos e monitorização para que a próxima falha seja detetada antes dos seus clientes darem por ela.

Resolver agora