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.

Problema para conexão ao banco de dados na instalação do Moodle Versão 5

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:

  • Caminho do socket incorreto: O PHP pode estar esperando o socket em um local diferente de onde o MySQL o estava criando.
  • Permissões: O usuário do servidor web pode não ter as permissões adequadas para acessar o arquivo do socket.
  • Configuração do MySQL: O MySQL pode não estar configurado para escutar conexões via socket Unix da maneira que o Moodle esperava, ou a preferência por TCP/IP era mais forte.

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 😉



Veja a relação completa dos artigos de Rubens Queiroz de Almeida