Erro 2002, não consegue ligar ao servidor da base de dados: host, socket e porta

O 2002 é diferente do 1045: aqui a aplicação nem chegou ao servidor da base de dados. Não houve recusa de palavra-passe, porque nunca houve conversa. As formas mais vistas são Can't connect to local MySQL server through socket '...' (2), Connection refused e Connection timed out. O que decide a cura é o endereço a que a aplicação tentou ligar-se.

Ler a mensagem

A mensagem O que costuma ser
through socket ... (2) Ligação ao servidor local por um ficheiro (socket). Ou o serviço não está a correr, ou o caminho do socket não é o que a aplicação espera.
Connection refused Chegou à máquina, mas nada escuta naquela porta: o serviço está parado, ou a porta está errada.
Connection timed out O pedido perdeu-se pelo caminho. De fora de um servidor hospedagem partilhada, as portas 3306 e 5432 não estão abertas, por isso é o resultado normal de se ligar a partir de fora.
getaddrinfo failed / Name or service not known O nome do servidor não existe ou tem um erro de escrita. O host escreveu-se mal.

Na conta de hospedagem, pela ordem

1 O host é localhost. Não é o endereço do site, nem o IP do servidor, nem o nome do servidor da antiga empresa. Quem trouxe o site de outro lado costuma trazer o host de lá no ficheiro de configuração. A lista de ficheiros está em onde cada aplicação guarda a ligação à base de dados.
2 Teste o phpMyAdmin. Se abre e vê as tabelas, a base de dados está viva e o defeito é da aplicação. Se o phpMyAdmin também não abre, e outros sites da conta falham ao mesmo tempo, o serviço está em baixo do nosso lado: não mexa em nada e abra um pedido.
3 Veja se a ligação vem de fora. Uma aplicação noutro servidor não chega lá directamente. A via que funciona é o túnel SSH: chegar ao MySQL por um túnel SSH. O ecrã Remote MySQL, só por si, não abre a porta: Remote MySQL no cPanel.
4 Se o erro vem e vai, lembre-se do que o artigo sobre a ligação perdida explica: a conta pode estar a esgotar ligações em horas de pico.

Num VPS com a sua própria base de dados

Num VPS o servidor de base de dados é seu, e o 2002 quer quase sempre dizer que o serviço não está a correr. Veja o estado com systemctl status mariadb (em algumas instalações o serviço chama-se mysql). Se parou, as razões habituais são o disco cheio e a falta de memória, que o sistema resolve matando o processo maior; o registo journalctl -u mariadb conta o que aconteceu. Se o serviço corre e o erro fala de socket, o caminho que o PHP procura pode ser outro: o localhost liga por socket e o 127.0.0.1 liga pela porta, e experimentar o segundo desencalha muitos casos.

No VPS os comandos são seus. O nosso suporte não instala nem repara a sua base de dados. Os limites estão em até onde vai o nosso suporte, e os primeiros passos com a máquina em primeiros passos com o seu VPS.
Ligações que falham “sem erro” são quase sempre uma porta fechada, não uma palavra-passe. Veja que portas estão abertas.

Já confirmou o host e o phpMyAdmin continua a abrir, mas o site não liga? Diga-nos o endereço do site e a mensagem exacta.

Abrir um pedido de suporte

VEJA TAMBÉM

Erro 1045: as causas, por ordem

Quando o site diz que não consegue ligar à base de dados

Chegar ao MySQL por um túnel SSH, passo a passo

Que portas estão abertas, e porque a sua integração fica pendurada

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?