Desenvolvimento e bases de dados

Resolver o erro de ligação à base de dados no WordPress

Revisto a 9 min de leitura wordpress mysql errores migraciones

A mensagem Error establishing a database connection ou Erro ao estabelecer ligação à base de dados indica que o WordPress não consegue ler a sua base de dados MySQL. É frequente depois de migrar o site, restaurar uma cópia ou alterar o utilizador da base de dados.

Não reinstale o WordPress nem importe repetidamente a base de dados antes de identificar a causa. O erro costuma estar na configuração, nas permissões ou no estado do MySQL, e substituir dados pode complicar a recuperação.

Verifique se a falha afeta apenas o WordPress

Antes de editar o wp-config.php, tente aceder ao phpMyAdmin a partir do cPanel:

  • Se o phpMyAdmin abrir e mostrar as bases de dados, esse acesso ao MySQL funciona. Ainda tem de verificar o utilizador, o host e as permissões que o WordPress utiliza, que podem ser diferentes.
  • Se também não conseguir entrar ou se várias aplicações mostrarem erros, pode existir um incidente geral ou um problema com a conta MySQL.
  • Se a base de dados aparecer mas não contiver as tabelas do WordPress, foi importada uma base de dados diferente ou a restauração não terminou corretamente.

Consulte como utilizar o phpMyAdmin para rever as tabelas sem alterar o seu conteúdo.

Reveja os dados do wp-config.php

Abra o wp-config.php no diretório do WordPress e localize:

define('DB_NAME', 'usuario_basedatos');
define('DB_USER', 'usuario_mysql');
define('DB_PASSWORD', 'contraseña_mysql');
define('DB_HOST', 'localhost');

Verifique cada valor:

Constante O que deve conter
DB_NAME Nome completo da base de dados no destino
DB_USER Utilizador MySQL associado a essa base de dados
DB_PASSWORD Palavra-passe atual desse utilizador MySQL
DB_HOST Servidor indicado pelo fornecedor; no cPanel costuma ser localhost

No cPanel, o nome da conta é normalmente acrescentado como prefixo às bases de dados e aos utilizadores. Se criou wordpress e usuariodb, os nomes reais podem ser micuenta_wordpress e micuenta_usuariodb.

Não confunda a palavra-passe do cPanel, do WordPress ou do correio com a palavra-passe do utilizador MySQL. São credenciais independentes.

Associe o utilizador à base de dados

Criar uma base de dados e criar um utilizador são duas ações separadas. Além disso, é preciso associá-los e atribuir privilégios.

  1. No cPanel, entre em Manage My Databases ou utilize o Assistente de bases de dados MySQL.
  2. Verifique que o utilizador indicado em DB_USER existe.
  3. Adicione-o à base de dados indicada em DB_NAME.
  4. Atribua os privilégios de que a aplicação precisa; uma instalação WordPress comum utiliza todos os privilégios sobre a sua própria base de dados.
  5. Guarde e volte a testar o site.

Este passo é uma causa frequente depois de uma migração manual: os ficheiros e as tabelas estão copiados, mas o novo utilizador não tem acesso à base de dados restaurada.

Verifique se importou a base de dados correta

No phpMyAdmin, abra a base de dados configurada e verifique que contém tabelas como:

  • wp_options
  • wp_posts
  • wp_users
  • wp_postmeta

O prefixo pode ser diferente de wp_. O WordPress define-o no wp-config.php através de $table_prefix:

$table_prefix = 'wp_';

Se as tabelas usarem outro prefixo, ajuste essa variável ao valor existente. Mudar o prefixo das tabelas sem uma migração preparada pode deixar plugins ou consultas personalizadas a apontar para nomes incorretos.

Verifique a palavra-passe do utilizador MySQL

Se não conseguir confirmar a palavra-passe atual, identifique primeiro todas as aplicações que utilizam esse utilizador. Defina depois uma nova no cPanel e atualize as respetivas configurações, incluindo DB_PASSWORD, de forma coordenada.

Faça a alteração de forma coordenada: desde que altera a palavra-passe no cPanel até guardar o wp-config.php, o WordPress não conseguirá ligar-se. Não publique a palavra-passe num ticket nem a reutilize noutros serviços.

Diferença entre ligação e tabelas danificadas

Uma base de dados com tabelas danificadas pode produzir mensagens diferentes ou erros parciais dentro do WordPress. Se o WordPress conseguir ligar-se mas indicar que uma tabela precisa de reparação, crie primeiro uma cópia da base de dados.

Apenas para executar a ferramenta de reparação integrada, pode acrescentar temporariamente:

define('WP_ALLOW_REPAIR', true);

Restrinja temporariamente o acesso a esse URL, abra /wp-admin/maint/repair.php e execute apenas a reparação que corresponda ao motor e ao diagnóstico. Esta ferramenta não repara qualquer problema do InnoDB. Elimine a linha do wp-config.php ao terminar, porque essa página não exige início de sessão enquanto a opção estiver ativa.

Não utilize a reparação quando o problema real for um nome, utilizador, palavra-passe ou host incorretos: não conseguirá ligar-se e não resolverá nada.

Se o erro apareceu depois de migrar o WordPress

Verifique também:

  • Que o ficheiro wp-config.php copiado não mantém os dados MySQL do fornecedor anterior.
  • Que a exportação SQL terminou sem erros e que a importação não ficou incompleta.
  • Que a versão do MySQL ou do MariaDB é compatível com a instalação.
  • Que não há duas cópias do wp-config.php e que não está a editar um diretório diferente daquele que serve o domínio.
  • Que o domínio aponta para o servidor que está a verificar.

Siga o guia para migrar o WordPress para outro alojamento para verificar os ficheiros, a base de dados, os URLs e o DNS como partes separadas.

Que informação enviar ao suporte

Se o erro continuar, indique:

  • O domínio e o momento aproximado em que começou.
  • Se apareceu depois de uma migração, de uma restauração ou de uma alteração de palavra-passe.
  • Se o phpMyAdmin mostra a base de dados e as suas tabelas.
  • O nome da base de dados e do utilizador MySQL, sem incluir palavras-passe.
  • Uma captura de ecrã da mensagem e qualquer erro relacionado do registo de PHP.

Não cole o conteúdo completo do wp-config.php: contém a palavra-passe da base de dados e as chaves de segurança do WordPress.

Se o registo indicar limites de ligações ou uma falha do serviço, não altere a palavra-passe por tentativa. Anote o erro e a hora e consulte o estado com o suporte. Depois de corrigir a causa, verifique a leitura e a escrita, e não apenas que a mensagem desaparece da página inicial.

Também lhe pode ser útil

Algo não bate certo ou mudou? Diga-nos e revemos.