De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 25 de julho de 2025
No momento estou fazendo a migração do servidor da Dicas-L para um novo ambiente, e isto envolve a configuração de um número enorme de serviços.
O problema mais surpreendente e que me tomou muito tempo para identificar, foi a instalação do banco de dados MySQL necessário para a instalação do Moodle.
Verifiquei a configuração do arquivo config.php
inúmeras vezes e tudo estava correto. O banco de dados, o usuário de conexão ao banco, a senha e diversos outros parâmetros. E sempre que eu tentava iniciar o processo de instalação, recebia a mensagem Error connecting to the database. O mais surpreendente é que eu já tinha instalado outras versões do Moodle 5 no mesmo servidor sem nenhum problema, utilizando o mesmo usuário e a mesma senha de conexão.
Apesar de todas as verificações apontarem para uma configuração correta, a solução para o problema foi surpreendentemente simples, mas um detalhe técnico crucial: mudar o valor de $CFG->dbhost
de localhost
para 127.0.0.1
no arquivo config.php
do Moodle.
Por que isso resolveu?
Em sistemas baseados em Linux, quando se especifica localhost
como o host do banco de dados, o MySQL frequentemente tenta estabelecer a conexão usando um socket Unix (um arquivo especial no sistema de arquivos, como /var/run/mysqld/mysqld.sock
). Essa é uma maneira otimizada e segura de comunicação entre processos no mesmo servidor.
No entanto, o uso de 127.0.0.1
força o MySQL a se conectar via TCP/IP (Protocolo de Controle de Transmissão/Protocolo de Internet), mesmo que a conexão seja para o mesmo servidor.
O erro ocorreu porque, por alguma razão específica da configuração do servidor, o Moodle (ou a forma como o PHP estava configurado para interagir com ele) teve dificuldade em usar a conexão via socket Unix que localhost
implicava. Isso pode ser devido a:
Ao mudar para 127.0.0.1
, o problema do socket Unix foi contornado, e a conexão foi estabelecida com sucesso através da interface de rede local. Embora ambos os valores apontem para o próprio computador (127.0.0.1
e localhost
), a forma como o banco de dados interpreta essa instrução de conexão é fundamentalmente diferente.
O importante é entender que embora localhost
e 127.0.0.1
sirvam para comunicação entre processos em um mesmo servidor, a forma como esta comunicação se dá é diferente e estas duas especificações possuem diferenças sutis.
Fica a dica e espero que se você se deparar com um problema parecido no futuro, leve menos tempo do que eu para resolver 😉