Desenvolvimento e bases de dados
Resolver o erro de ligação à base de dados no WordPress
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.
- No cPanel, entre em Manage My Databases ou utilize o Assistente de bases de dados MySQL.
- Verifique que o utilizador indicado em
DB_USERexiste. - Adicione-o à base de dados indicada em
DB_NAME. - 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.
- 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_optionswp_postswp_userswp_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.phpcopiado 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.phpe 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
- Clonar uma base de dados Duplique uma base de dados MySQL criando primeiro o destino e as suas permissões no cPanel e copiand...
- Consultar a versão do MySQL e verificar a compatibilidade Identifique a versão real do servidor MySQL que a sua aplicação utiliza, reveja a compatibilidade e...
- Converter uma base de dados MyISAM para InnoDB, mudando o motor de armazenamento Converta tabelas MyISAM para InnoDB sobre um clone verificado, reveja o espaço, os índices e as linh...
- Converter uma base de dados de utf8 para utf8mb4 Migre tabelas de utf8 para utf8mb4 numa base de dados clonada, revendo collations e índices e manten...
Algo não bate certo ou mudou? Diga-nos e revemos.