Como faço para solucionar erros de conexão de banco de dados em aplicações baseadas no WordPress hospedadas no Lightsail?

Data da última atualização: 28/9/2021

Estou recebendo um ou os dois erros a seguir ao me conectar minha aplicação baseada no WordPress:

  • "Erro ao estabelecer uma conexão com o banco de dados."
  • "Uma ou mais tabelas de banco de dados não estão disponíveis. O banco de dados pode precisar ser reparado."

Como posso resolver esses erros?

Breve descrição

O erro "Erro ao estabelecer uma conexão com o banco de dados" pode ocorrer pelos seguintes motivos:

  • Há tabelas de banco de dados corrompidas.
  • A conexão com o banco de dados remoto está desabilitada.
  • O serviço de banco de dados está inativo.
  • Não há espaço suficiente no volume.
  • Há credenciais de login incorretas no arquivo de configuração do WordPress.

Resolução

Tabelas de banco de dados corrompidas

Abra a página wp-admin do seu site (por exemplo, example.com/wp-admin) no navegador e procure o erro "Uma ou mais tabelas de banco de dados não estão disponíveis. Talvez o banco de dados precise ser reparado". Se você vir esse erro, você está recebendo o erro "Erro ao estabelecer conexão com o banco de dados" devido a tabelas de banco de dados corrompidas. Para reparar tabelas corrompidas, faça o seguinte:

1.    Acesse o arquivo wp-config.php usando um editor de textos, como o editor vi.

$ sudo vi wp-config.php

2.    Adicione a seguinte linha no arquivo wp-config.php. Certifique-se de adicionar a linha imediatamente antes da linha "Isso é tudo, pare de editar! Feliz blog".

define('WP_ALLOW_REPAIR' ,true);

3.    Depois de adicionar a configuração anterior ao arquivo, acesse o seguinte URL e execute Repair Database:

/wp-admin/maint/repair.php (por exemplo, example.com/wp-admin/maint/repair.php)

4.    Depois de executar o reparo do banco de dados, remova a linha de código que você adicionou ao arquivo wp-config.php. Se você não remover essa linha, qualquer pessoa poderá executar o reparo em seu banco de dados.

Conexão de banco de dados remota desabilitada

Às vezes, bancos de dados residem em um servidor de banco de dados remoto. Se o servidor de banco de dados não permitir conexões remotas da instância que hospeda o site, você não poderá se conectar ao banco de dados. Para solucionar esse problema, faça o seguinte:

1.    Verifique o arquivo de configuração wp-config.php quanto ao valor DB_HOST. Se o host não for localhost ou 127.0.0.1, o banco de dados residirá em um servidor remoto, conforme mostrado no exemplo a seguir:

define('DB_HOST', '192.168.22.9');

2.    Tente fazer telnet do servidor para o servidor remoto na porta 3306. Se você não conseguir se conectar, as conexões remotas não são permitidas na configuração do banco de dados no servidor remoto. Ou há um firewall no servidor remoto que está bloqueando a conexão. Entre em contato com o proprietário ou o suporte do banco de dados externo para obter assistência para permitir conexões de sua instância do Lightsail.

É prática recomendada armazenar o banco de dados do site em um banco de dados gerenciado pelo Lightsail para ter alta disponibilidade e segurança.

O serviço de banco de dados está inativo

Observação: os caminhos e comandos de arquivo a seguir podem mudar dependendo se sua instância do WordPress do Lightsail usa MySQL ou MariaDB. Além disso, os caminhos e comandos do arquivo variam dependendo se a instância usa pacotes nativos do sistema Linux (abordagem A) ou se é uma instalação autocontida (abordagem B). Para identificar o tipo de servidor de banco de dados e qual abordagem seguir, execute os seguintes comandos:

test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A" || echo "Approach B"
test -d /opt/bitnami/mariadb && echo "MariaDB" || echo "MySQL"

1.    Se você verificou que não há corrompimento de tabelas e nenhum problema de conexão de banco de dados remoto, e o WordPress ainda não consegue se conectar ao banco de dados, seu servidor de banco de dados pode estar inativo. Isso pode acontecer devido a problemas de configuração do banco de dados, tráfego intenso em um servidor, pouco espaço em disco, pouca memória disponível e assim por diante. Verifique o status do serviço de banco de dados usando o seguinte comando:

Servidor de banco de dados MySQL

sudo /opt/bitnami/ctlscript.sh status mysql

Servidor de banco de dados MariaDB

sudo /opt/bitnami/ctlscript.sh status mariadb

2.    Se o comando anterior mostrar que o banco de dados está no estado interrompido, tente iniciar o serviço de banco de dados usando o seguinte comando:

Servidor de banco de dados MySQL

sudo /opt/bitnami/ctlscript.sh start mysql

Servidor de banco de dados MariaDB

sudo /opt/bitnami/ctlscript.sh start mariadb

3.    Se você ainda não conseguir iniciar o serviço de banco de dados e estiver recebendo erros durante o processo de inicialização, verifique os logs do serviço de banco de dados para identificar a causa-raiz e solucionar o problema. O arquivo de log de serviço de banco de dados principal está localizado em um dos seguintes locais em sua instância do WordPress do Lightsail:

Servidor de banco de dados MySQL seguindo a abordagem A: /opt/bitnami/mysql/logs/mysqld.log

Servidor de banco de dados MySQL seguindo a abordagem B: /opt/bitnami/mysql/data/mysqld.log

Servidor de banco de dados MariaDB seguindo a abordagem A: /opt/bitnami/mariadb/logs/mysqld.log

Servidor de banco de dados MariaDB seguindo a abordagem B: /opt/bitnami/mariadb/data/mysqld.log

A performance e a conectividade do banco de dados podem ser afetados por pouco espaço em disco e/ou pouca memória disponível. Verifique esses recursos usando os comandos df e free.

Espaço insuficiente no seu volume

Se o espaço livre em disco no volume for 100% ou um pouco abaixo de 100%, o serviço de banco de dados poderá sair do ar.

1.    Execute o seguinte comando:

$ sudo df -h

O comando anterior lista a quantidade de espaço livre em disco, conforme mostrado no exemplo a seguir:

Filesystem      Size    Used     Avail      Use%    Mounted on
devtmpfs        1.9G     0       1.9G        0%     /dev
tmpfs           1.9G     0       1.9G        0%     /dev/shm
tmpfs           1.9G    400K     1.9G        1%     /run
tmpfs           1.9G     0       1.9G        0%     /sys/fs/cgroup
/dev/nvme0n1p1  8.0G    8.0G      0G        100%    /
tmpfs           389M     0       389M        0%     /run/user/1000

2.    Se a saída do comando mostrar que não há espaço disponível suficiente, você pode redimensionar sua instância para um tamanho maior. Ou você pode excluir arquivos desnecessários do servidor para liberar espaço.

3.    Depois de aumentar o espaço livre em disco, reinicie o serviço de banco de dados.

Credenciais de login incorretas nas configurações do WordPress

O WordPress precisa de uma cadeia de conexão de banco de dados específica, que inclui um nome de usuário, senha e host para acessar o banco de dados. Se algum desses itens tiver sido alterado, o WordPress não poderá acessar o banco de dados.

1.    Para verificar se você está usando a cadeia de conexão correta, obtenha os detalhes da cadeia de conexão DB_NAME, DB_HOST, DB_USER e DB_PASSWORD no arquivo wp-config.php.

2.    Acesse o banco de dados de um terminal usando a cadeia de conexão. Certifique-se de substituir DB_NAME, DB_HOST e DB_USER pelos valores obtidos na etapa 1.

sudo mysql 'DB_NAME' -h 'DB_HOST' -u 'DB_USER' -p
Enter password: ********

Observação: a senha não é exibida ao ser inserida para que não se torne visível para outros usuários.

3.    Pressione a tecla ENTER depois de inserir a senha.

Se você receber um erro Acesso negado ao usar o comando anterior, isso geralmente significa que as credenciais estão incorretas.

Se estiver usando um host de banco de dados remoto, adicione a cadeia de conexão correta no arquivo wp-config.php. Se o banco de dados estiver no mesmo servidor, verifique se DB_NAME é bitnami_wordpress e DB_USER é bn_wordpress.

Para redefinir a senha do usuário do banco de dados, faça o seguinte:

1.    Use o comando a seguir para acessar /home/bitnami/bitnami_credentials. Anote a senha de root do banco de dados.

sudo cat /home/bitnami/bitnami_credentials

2.    Faça login no shell do MySQL/MariaDB usando o seguinte comando e digite a senha que você obteve do comando anterior. Se não conseguir fazer login no shell usando a senha de root do banco de dados, redefina a senha (MySQL ou MariaDB)

sudo mysql -u root -p
Enter password: ********

3.    No shell do MySQL ou do MariaDB, execute a seguinte consulta para garantir que o banco de dados bitnami_wordpress exista:

show databases;

4.    Execute a seguinte consulta para garantir que o usuário do banco de dados bn_wordpress exista:

SELECT user FROM mysql.user;

5.    Redefina a senha do usuário do banco de dados "bn_wordpress" usando a consulta a seguir.

Observação: substitua PASSWORD pela senha que você obteve do arquivo wp-config.php.

Banco de dados MySQL

alter user 'bn_wordpress'@'localhost' identified by 'PASSWORD‘;
alter user 'bn_wordpress'@'127.0.0.1' identified by 'PASSWORD‘;

Banco de dados MariaDB

alter user 'bn_wordpress'@'%' identified by 'PASSWORD‘;

Observação: se nenhuma das resoluções anteriores funcionar, você poderá restaurar sua instância usando um snapshot de backup.


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?