web-dev-qa-db-fra.com

Erreur lors de la connexion au serveur MongoDb Atlas

Je suis actuellement en train de créer une application Web et j'ai besoin d'une base de données, j'ai donc décidé d'aller avec mongodb et mangouste. Jusqu'à présent, je testais tout sur localhost et cela fonctionnait mais je voulais déplacer les données vers un serveur. J'avais entendu parler d'Atlas et je me suis enregistré et j'ai "téléchargé" les données.

Maintenant, je veux me connecter au cluster via une application node.js.

mongoose.connect('mongodb+srv://engllucas:p%[email protected]/test');

J'ai obtenu la chaîne du site mongodb Atlas au point Connectez votre application

J'ai ensuite troqué mon mot de passe.

mongoose.connect('mongodb://engllucas:p%[email protected]/test');

Cela n'a pas fonctionné non plus.

C'est le message d'erreur:

{ MongoError: failed to connect to server [insight-shard-00-02-quhku.mongodb.net:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 18.194.163.64:27017]
at Pool.<anonymous> (U:\WEBT\ProjectInsight\Quiz\node_modules\mongodb-core\lib\topologies\server.js:503:11)
at emitOne (events.js:115:13)
at Pool.emit (events.js:210:7)
at Connection.<anonymous> (U:\WEBT\ProjectInsight\Quiz\node_modules\mongodb-core\lib\connection\pool.js:326:12)
at Object.onceWrapper (events.js:318:30)
at emitTwo (events.js:125:13)
at Connection.emit (events.js:213:7)
at TLSSocket.<anonymous> (U:\WEBT\ProjectInsight\Quiz\node_modules\mongodb-core\lib\connection\connection.js:245:50)
at Object.onceWrapper (events.js:316:30)
at emitOne (events.js:115:13)
at TLSSocket.emit (events.js:210:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
  name: 'MongoNetworkError',

message: "échec de la connexion au serveur [insight-shard-00-02-quhku.mongodb.net:27017] lors de la première connexion [MongoNetworkError: connect ECONNREFUSED 18.194.163.64:27017]"} (nœud: 4920) UnhandledPromiseRejectionWarning: promesse non gérée rejet (id de rejet: 1): MongoNetworkError: échec de connexion au serveur [insight-shard-00-02-quhku.mongodb.net:27017] lors de la première connexion [MongoNetworkError: connect ECONNREFUSED 18.194.163.64:27017] (nœud: 4920 ) [DEP0018] DeprecationWarning: les refus de promesse non gérés sont déconseillés. À l'avenir, les refus de promesse qui ne sont pas traités mettront fin au processus Node.js avec un code de sortie différent de zéro.

17
Lucas Engleder

J'ai également eu un problème similaire, et j'ai pu le résoudre en ajoutant ma liste blanche à mon adresse IP sous Clusters -> sécurité -> Liste blanche IP. Au lieu de cliquer sur my current ip address, il suffit de rechercher quel est mon ip sur google et de le coller à la place. J'espère que ca fonctionne!

51
Waweru wa Kamau

J'ai rencontré ce problème lors de la connexion à un cluster MongoDB Atlas. J'ai dû résoudre ce problème à deux reprises car je travaillais sur un projet à partir de deux ordinateurs différents (un Macbook Pro et un PC Windows).

Voici ma réponse complète pour tout ce que j'ai trouvé pour résoudre le problème de mon application ne se connectant pas au cluster.

First Assurez-vous que votre IP est sur la liste blanche comme les suggestions ci-dessus. La solution la plus simple est la liste blanche "All IPs" de 0.0.0.0/0

Second Vérifiez votre VPN si vous en utilisez un. J'essayais de me connecter au cluster lorsque j'étais connecté à un VPN. Une fois que j'ai désactivé mon VPN, j'ai pu me connecter.

Troisième Assurez-vous que vos paramètres Internet ne vous empêchent pas de vous connecter au cluster. Les paramètres de sécurité Wi-Fi de mon domicile Xfinity étaient trop élevés et cela empêchait la connexion. Je pense que le routeur n'autorisait pas une connexion au port 27017. Une façon de tester si ce problème se produit est d'attacher votre ordinateur à votre téléphone pour Internet au lieu de votre wifi et essayez de vous connecter. J'ai pu me connecter en utilisant mon iPhone comme point d'accès Internet. J'ai réinitialisé mon routeur aux paramètres d'usine qui ont résolu le problème.

9
prestondoris

si vous utilisez mangouste avant la version 5.0.15:

lemongodb+srv://ri n'est pas valide pour le pilote natif sous-jacent.

la simple suppression du + srv ne fonctionnera pas non plus, car l'URI devra inclure vos hôtes de réplique et les paramètres replicaSet/authSource.

tu peux soit

1. Mettez à niveau vers mangouste 5.0.15 et utilisez le format plus court + srv

ou

2. Utilisez votre version actuelle avec l'URI complet de votre tableau de bord de cluster Atlas, en sélectionnant l'ancien pilote (voir Remarque ci-dessous) version uri.

dans le tableau de bord de votre cluster, appuyez sur le bouton de connexion, puis (en supposant que vous ayez ajouté la liste d'adresses IP de votre serveur de nœud) sélectionnez "connectez votre application", puis appuyez sur "J'utilise un pilote 3.4 ou plus ancien". Utilisez la chaîne uri résultante en remplaçant votre mot de passe.

Remarque: Dans la boîte de dialogue pour choisir votre chaîne URI dans l'assistant de connexion sur le tableau de bord du cluster Atlas, il est indiqué "J'utilise le pilote 3. * ou (plus récent | plus ancien)". C'est un mauvais choix de mots, car les versions 3.6 et 3.4 ne font pas référence à la version du pilote, mais à la version du serveur. De plus, l'utilisation d'une version du serveur ou de l'autre n'a rien à voir avec le pilote utilisé pour se connecter, c'est là que réside la dépendance réelle qui détermine la version de l'URI à utiliser.

4
lineus

C'est un problème de votre "liste blanche IP". Modifiez-le et mettez-le à jour une fois, cela devrait fonctionner correctement.

2
Sohan

La réponse ci-dessus est juste mais je veux juste ajouter un point:

Du point de vue de la sécurité, ce n'est pas bon;

  1. J'ai également rencontré un problème similaire et j'ai pu le résoudre en ajoutant ma liste blanche à mon adresse IP sous Clusters -> security -> IP Whitelist. Au lieu de cliquer sur mon current ip address, il suffit de rechercher quel est mon ip sur google et de le coller à la place. J'espère que ca fonctionne!

  2. J'ai également rencontré un problème similaire et j'ai pu le résoudre en ajoutant ma liste blanche à mon adresse IP sous Clusters -> security -> IP Whitelist. a ajouté cette IP dans la liste: 0.0.0.0/0 il sera ouvert à tous.

2
Pramod Kharade

J'ai également rencontré le même problème lors de la connexion de MongoDB Compass au https://cloud.mongodb.com/ cluster.

Les étapes suivantes résolvent le problème.

  1. Visitez google.com> Entrez mon adresse IP> Copiez l'adresse IP publique de votre système/réseau
  2. Accédez à https://cloud.mongodb.com/ Cluster> Sélectionnez Sécurité> Accès réseau> Cliquez sur l'onglet Liste blanche IP> Ajouter une adresse IP> Saisissez votre adresse IP publique.
1
Mukesh Arora

Apparemment, en train de changer

mongoose.connect(keys.mongoURI);

à

mongoose.connect(keys.mongoURI, () => { }, { useNewUrlParser: true })
    .catch(err => {
        console.log(err);
    });

travaillé pour moi.

1
Raunak Singha

Vérifiez que votre adresse IP actuelle figure sur la liste blanche IP de MongoAtlas. J'ai rencontré ce problème après avoir mis à jour mon VPN.

1
PleatherShaman

J'ai eu le même problème, alors que la liste blanche IP était correctement définie!

La raison en était que MongoDB Enterprise Atlas nécessite une couche de cryptage SSL essayant de se connecter sans cela, produit une erreur non raisonnable et non explicite comme:

Failed to connect to mongodb-m0-nnxxx.mongodb.net:27017
No chance to Authorize

En essayant de se connecter en utilisant le client mondodb avec la liste blanche IP étant le problème, un message d'erreur comme celui-ci apparaît:

mongo "mongodb+srv://mongodb-m0-nnxxx.mongodb.net/test" --username admin

DBClientConnection failed to receive message from mongodb-m0-shard-00-00-nnxxx.mongodb.net.:27017 - HostUnreachable: Connection closed by peer
Unable to reach primary for set mongodb-m0-shard-0
Cannot reach any nodes for set mongodb-m0-shard-0. Please check network connectivity and the status of the set. This has happened for 5 checks in a row.

Par exemple, en utilisant le client Robo 3T, la case à cocher "tiliser le protocole SSL" doit être activée et ** Méthode d'authentification: certificat auto-signé **

Le test produit une sortie de diagnostic:

v Connected to mongodb-m0-nnxxx.mongodb.net:27017 via SSL tunnel
v Authorized on admin database as admin

J'espère que cela aide quelqu'un.

0
Arunas Bartisius

Je me suis connecté avec vpn avant de m'en rendre compte. Quand j'ai essayé de me connecter à db plus tard, je n'ai pas pu le faire. J'ai à nouveau ouvert ma propre corde et toutes les autorisations dans les autorisations. Ensuite, lorsque je me suis à nouveau connecté avec vpm, j'ai pu me connecter.

0
Ali Bulut

J'obtenais ce problème et je l'ai résolu. Voici les étapes que j'ai utilisées:

  1. Tout d'abord, ajoutez un nouvel utilisateur dans mongodb (Sécurité> Accès à la base de données> AJOUTER UN NOUVEL UTILISATEUR>)
  2. puis écrivez dans le fichier .env un nouveau nom d'utilisateur et un nouveau mot de passe.
  3. Tuez le serveur et réexécutez le serveur.

C'est la solution qui a fonctionné pour moi.

0
Emre Mutlu

J'ai eu un problème similaire et je n'ai pas pu me connecter à Mongo. Apparemment, mongodb n'a pas aimé mon mot de passe qui contenait des caractères spéciaux. J'ai essayé de faire l'encodage d'URL et toutes autres sortes de manipulations, mais ce qui s'est avéré avoir résolu le problème pour moi a finalement été simplement de changer le mot de passe en un mot de passe qui n'utilise pas de caractères spéciaux. J'ai utilisé le générateur de mot de passe mongodb et tout fonctionne bien maintenant.

0
vrommer