ECONNREFUSED (errno 111)

errno 111

LINUX

Message officiel (tel qu'affiché à l'écran) : Connection refused

Aussi recherché sous la forme : Connection refused, errno 111, connect ECONNREFUSED, ECONNREFUSED 127.0.0.1

Terminal Linux exécutant strace, avec l'appel système en échec et l'errno mis en évidence
errno Linux : tracez l'appel système exact qui échoue avant de modifier quoi que ce soit.

Ce que cela signifie

ECONNREFUSED, « Connection refused » (errno 111 sous Linux, 61 sous macOS), signifie que l’hôte cible a répondu mais qu’aucun programme n’accepte de connexions sur ce port. Node.js l’affiche sous la forme « connect ECONNREFUSED 127.0.0.1:5432 ». Le service ne tourne pas, écoute ailleurs, ou un pare-feu rejette la connexion.

S'applique à : Linux, macOS (errno BSD), WSL, Conteneurs Docker

Comment corriger ECONNREFUSED (errno 111)

  1. Vérifiez que le service est en cours d’exécution ('systemctl status <service>', 'docker ps')
  2. Vérifiez l’adresse et le port d’écoute sur le serveur avec 'sudo ss -ltnp' ; une base de données liée à 127.0.0.1 refuse les clients distants
  3. Dans Docker, « localhost » désigne le conteneur lui-même ; utilisez le nom du service de docker-compose ou 'host.docker.internal' pour joindre l’hôte
  4. Si « localhost » échoue mais que '127.0.0.1' fonctionne (ou l’inverse), le serveur n’écoute qu’en IPv4 ou qu’en IPv6
  5. Vérifiez les règles REJECT du pare-feu ('sudo iptables -L -n' ou 'sudo nft list ruleset')
  6. Si le service démarre lentement, ajoutez des nouvelles tentatives ou une attente de disponibilité avant de vous connecter

Pourquoi cela se produit

Le noyau distant a répondu par un RST parce qu’aucun socket n’écoute sur cette adresse et ce port, ou parce qu’une règle de pare-feu l’a activement rejetée. Services arrêtés, mauvais ports, liaisons limitées à la boucle locale et confusions de réseau entre conteneurs en sont les causes habituelles.

FAQ

Pourquoi mon application obtient-elle ECONNREFUSED vers la base de données dans Docker ?

Dans un conteneur, « localhost » désigne le conteneur lui-même. Connectez-vous plutôt au nom de service du conteneur de la base de données.

Erreurs liées

Source : Linux kernel errno.h · solutions rédigées et vérifiées par les éditeurs (voir notre politique éditoriale)

Dernière mise à jour :