O erro “error es­ta­blishing a database con­nec­tion“ ocorre quando o MySQL ou MariaDB não consegue es­ta­be­le­cer a conexão entre o apli­ca­tivo e o banco de dados. Ge­ral­mente, isso se deve a cre­den­ci­ais in­cor­re­tas, um servidor de banco de dados parado ou problemas de con­fi­gu­ra­ção.

O que está por trás da mensagem “error es­ta­blishing a database con­nec­tion”

A mensagem “error es­ta­blishing a database con­nec­tion” (em português “Não foi possível es­ta­be­le­cer conexão com o banco de dados”) indica que um apli­ca­tivo, como um site em PHP, não conseguiu es­ta­be­le­cer uma conexão com o banco de dados MySQL ou MariaDB. As causas comuns são cre­den­ci­ais inválidas, como um nome de usuário ou senha in­cor­re­tos, um servidor de banco de dados que não está em execução ou con­fi­gu­ra­ções de servidor in­cor­re­tas. Problemas de rede, como portas blo­que­a­das ou in­for­ma­ções de host erradas, também podem de­sen­ca­dear a mensagem de erro. Em sistemas de ge­ren­ci­a­mento de conteúdo como WordPress, o erro é exibido di­re­ta­mente quando o banco de dados não está acessível. Ge­ral­mente, bloqueia o acesso ao site inteiro, pois os conteúdos não podem ser car­re­ga­dos ou ar­ma­ze­na­dos.

Como corrigir “error es­ta­blishing a database con­nec­tion” no MySQL/MariaDB

Se não foi possível es­ta­be­le­cer conexão com o banco de dados, isso pode ter uma série de razões. Verifique as soluções a seguir passo a passo para descobrir por que a conexão está falhando no seu caso.

Solução 1: verifique se o MySQL/MariaDB está em execução

Se o MySQL ou o MariaDB não estiverem em execução, scripts e sites não conseguem se conectar com o banco de dados. Em um servidor Linux, você pode verificar se o MySQL está em execução com o comando:

ps -aux | grep mysql

Isso retorna uma lista dos processos em execução que contêm “mysql” no nome. A lista inclui o comando que você acabou de executar. Se o MySQL estiver em execução, ela também inclui o processo do MySQL.

Imagem: Processo MySQL
Na saída, você pode iden­ti­fi­car se o MySQL/MariaDB está em execução.

Se o MySQL/MariaDB não estiver em execução, você verá apenas seu comando grep listado.

Inicie o MySQL/MariaDB com os seguintes comandos:

# Ubuntu
systemctl start mysql
systemctl start mariadb
# CentOS
systemctl start mysqld 
systemctl start mariadb

Cer­ti­fi­que-se de usar o nome de usuário e a senha corretos. Ambas as in­for­ma­ções são definidas ao criar o banco de dados MySQL. Além disso, você deve con­fi­gu­rar o nome de host correto.

Solução 2: verifique a conexão com o banco de dados

Assim que souber que o MySQL/MariaDB está em execução, o próximo passo é se conectar a partir da linha de comando com o comando:

mysql -u root -p

Você deve ser so­li­ci­tado a inserir a senha do usuário root. Por padrão, a senha para o acesso root é a mesma que a senha root inicial do seu servidor.

Nota

Se você alterar a senha do usuário root do servidor, a senha do usuário root do MySQL não será alterada.

Depois de inserir a senha, você deve estar no cliente MySQL/MariaDB. Um cliente MySQL, por exemplo, se parece com isto:

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 9.4.0 Homebrew
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

Se você tiver problemas para es­ta­be­le­cer uma conexão MySQL com outro nome de usuário e senha, execute este teste uma segunda vez e substitua root pelo outro nome de usuário.

Solução 3: verifique o nome de usuário do MySQL/MariaDB

Se você inserir cre­den­ci­ais in­cor­re­tas, receberá um erro como este:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Cer­ti­fi­que-se de que tanto o nome de usuário, que você vê na so­li­ci­ta­ção, quanto a senha que você digitou estão escritos cor­re­ta­mente. Observe que o nome de usuário di­fe­ren­cia maiús­cu­las de mi­nús­cu­las, ou seja, Root não é o mesmo que root.

Social Buy Button da IONOS

Trans­forme com­par­ti­lha­men­tos, curtidas e posts salvos em vendas! Comece a vender seus produtos nas mídias sociais sem o trabalho de ter que criar e manter um site!

  • Ativação fácil
  • Flexível
  • Suporte 24 horas

Vale a pena verificar se você está usando a or­to­gra­fia correta e a ca­pi­ta­li­za­ção certa para o nome de usuário. Para listar todos os usuários do MySQL/MariaDB, faça login como root no cliente de linha de comando com o comando:

mysql -u root -p

Em seguida, liste todos os usuários do MySQL e seus hosts com o comando:

select host, user from mysql.user;

Isso mostrará o nome de usuário exa­ta­mente como foi criado. Além disso, na coluna Host, você verá o local de onde o usuário tem permissão para se conectar.

Solução 4: redefinir a senha do MySQL/MariaDB do usuário

Nota

Es­pe­ci­al­mente ao redefinir a senha do usuário root, é preciso ter cuidado. Preste atenção especial ao seguir as dicas a seguir para não excluir aci­den­tal­mente uma senha errada.

Se a grafia do nome de usuário também não for o problema, o erro es­ta­blishing a database con­nec­tion pode estar em uma senha inválida. Para redefinir a senha MySQL/MariaDB de um usuário, conecte-se ao cliente de linha de comando como root usando o comando:

mysql -u root -p

Em seguida, redefina a senha do usuário cor­res­pon­dente com o comando:

ALTER USER 'myuser'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;

Substitua new_password pela nova senha e myuser pelo nome de usuário.

Solução 5: cer­ti­fi­que-se de que o usuário tenha as per­mis­sões corretas.

Se você tem certeza de que o nome de usuário e a senha estão corretos, o problema pode ser que o usuário não possua as per­mis­sões (Grants) adequadas para este banco de dados.

Para verificar as per­mis­sões (Grants) de um usuário, faça login no cliente de linha de comando como root com o comando:

mysql -u root -p

Em seguida, exiba as per­mis­sões do usuário com o comando:

SHOW GRANTS FOR 'myuser'@'localhost';

Substitua myuser pelo nome de usuário. Altere localhost pelo nome do host, se ne­ces­sá­rio.

Você deve receber uma lista de pri­vi­lé­gios que o usuário possui para o res­pec­tivo banco de dados. Deve parecer algo assim:

+-------------------------------------------------------------+
| Grants for myuser@localhost								  |
+-------------------------------------------------------------+
| GRANT USAGE ON *.* TO `myuser`@`localhost`                  |
| GRANT ALL PRIVILEGES ON `reviews`.* TO `myuser`@`localhost` |
+-------------------------------------------------------------+
2 rows in set (0,004 sec)

Observe que este usuário possui todas as per­mis­sões para um banco de dados chamado reviews.

Se o usuário não tiver per­mis­sões atri­buí­das a um banco de dados, você verá algo assim:

+--------------------------------------------+
| Grants for myuser@localhost                |
+--------------------------------------------+
| GRANT USAGE ON *.* TO `myuser`@`localhost` |
+--------------------------------------------+
1 row in set (0,001 sec)

Observe que este usuário apenas possui as per­mis­sões USAGE em “.” e nenhuma permissão para bancos de dados. Isso pode causar o error es­ta­blishing a database con­nec­tion.

Solução 6: verificar a conexão com o banco de dados a partir da web

Mesmo que o MySQL ou MariaDB esteja rodando lo­cal­mente, ainda podem surgir problemas no ambiente web. Um teste simples a partir do navegador ajuda a verificar exa­ta­mente essa conexão e a iden­ti­fi­car possíveis problemas de acesso pre­co­ce­mente. Utilize um script simples para testar se o seu banco de dados aceita a conexão. Crie um arquivo chamado database-connection-test.php com o seguinte conteúdo:

<?php
$test_connect = mysqli_connect('localhost', 'root', 'password');
if (!$test_connect) {
	die('Nao foi possivel estabelecer conexao com o banco de dados: ' . mysqli_connect_error()); 
}
echo 'Conexão bem-sucedida com o banco de dados.';
mysqli_close($test_connect);
?>

Substitua a palavra password pela senha de root.

Coloque este arquivo no seu diretório web e depois acesse-o em um navegador. Se você conseguir conectar-se com o nome de usuário root e a senha, saberá que sua base de dados aceita conexões.

Se você tiver problemas ao es­ta­be­le­cer uma conexão MySQL/MariaDB com outro nome de usuário e senha, realize este teste novamente subs­ti­tuindo root pelo outro nome de usuário e password pela senha cor­res­pon­dente.

Nota

Cer­ti­fi­que-se de excluir este arquivo assim que concluir seus testes.

Solução 7: verificar o firewall e as portas

Mesmo que o MySQL ou MariaDB estejam fun­ci­o­nando cor­re­ta­mente e as cre­den­ci­ais de acesso estejam corretas, um firewall pode bloquear a conexão. Por padrão, o MySQL utiliza a porta 3306 para conexões de entrada. Primeiro, verifique se a porta está aberta. Em um sistema Linux, você pode usar os seguintes comandos:

sudo netstat -tulnp | grep 3306
# Em sistemas com ufw (Ubuntu)
sudo ufw status

Se o firewall estiver blo­que­ando a porta, você pode liberá-la es­pe­ci­fi­ca­mente:

# Ubuntu com ufw
sudo ufw allow 3306/tcp
sudo ufw reload
# CentOS ou RHEL com firewalld
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

Lembre-se de liberar a porta apenas para os endereços IP que realmente ne­ces­si­tam de acesso. Abrir para todos pode re­pre­sen­tar um risco de segurança. Depois de ajustar o firewall ade­qua­da­mente, seu apli­ca­tivo deve estar novamente apto a es­ta­be­le­cer conexão com o banco de dados MySQL/MariaDB. Verifique novamente com o script de teste PHP ou di­re­ta­mente pelo console.

Ir para o menu principal