web-dev-qa-db-fra.com

Obtenir que MongoDB sous Linux écoute les connexions distantes

J'ai correctement installé MongoDB sous Windows (sur une machine locale) en tant que service, mais je souhaite maintenant déplacer MongoDb sur un serveur distinct. J'ai donc extrait l'archive sur un serveur virtuel du réseau (sous Linux).

Lorsque je me suis connecté au serveur ("testmongoserver") à l'aide de PuTTY à partir de ma machine locale, j'ai démarré le serveur Mongodod et il m'a dit qu'il écoutait le port 28017 par défaut. La console mongo fonctionne également et m’a permis de créer une nouvelle base de données (testdb) et d’y ajouter des utilisateurs.

Cependant, je ne pouvais pas accéder au serveur à distance. Quand je tape testmongoserver:28017 _ il n’ouvre pas la console HTTP comme localhost:28017 sur ma machine locale. Je ne peux pas non plus me connecter avec des pilotes officiels et en fournissant une chaîne de connexion.

Quelles sont les étapes nécessaires pour installer MongoDB sur Linux, afin que je puisse y accéder depuis un ordinateur distant avec une chaîne de connexion et utiliser sa console HTTP via testmongoserver:28017

Merci!

55
user315648
  1. Exécutez netstat -a sur le serveur Mongo et vérifiez un port.
  2. Vérifiez les paramètres DNS et vérifiez que le serveur Linux autorise les connexions externes.
  3. Vérifiez que mongodb accepte les connexions externes/distantes.

Le port par défaut pour mongo est 27017. 28017 - port pour webstats.

Voir http://www.mongodb.org/display/DOCS/Security+and+Authentication#SecurityandAuthentication-Ports

19
Andrej Ludinovskov

1. Option de liaison IP

Bind IP est une option de MongoDB qui limite les connexions à des adresses IP spécifiques.

Regardez votre fichier de configuration Mongod, la plupart du temps bind_ip est réglé sur 127.0.0.1 pour des raisons évidentes de sécurité. Vous pouvez:

  1. Ajoutez votre adresse IP souhaitée en concaténant une liste de valeurs séparées par des virgules pour lier MongoDB à plusieurs adresses IP.
  2. Supprimer ou commenter (avec # caractère) le bind_ip ligne. Mais sachez que toutes les connexions distantes pourront connecter votre serveur MongoDB!

Plus à propos bind_ip option de configuration: https://docs.mongodb.com/manual/reference/configuration-options/#net.bindIp

Bind IP peut également être défini comme argument de commande: http://docs.mongodb.org/manual/reference/program/mongod/#cmdoption--bind_ip

2. Pare-feu

Vérifiez que vous ne courez pas derrière un pare-feu

79
Yves M.

Assurez-vous que dans votre /etc/mongodb.conf fichier vous avez la ligne suivante,

bind_ip = 0.0.0.0

http://jitu-blog.blogspot.com.br/2013/06/allow-mongo-to-connect-from-remote-ip.html

33
victorkurauchi

Je viens d'avoir ce problème et cela l'a résolu:

Modifier /etc/mongod.conf avec Sudo nano /etc/mongod.conf assurez-vous que la section net ressemble à celle ci-dessous (la liaison localhost ne permet pas l'accès à distance par défaut):

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

Assurez-vous de redémarrer Mongod lorsque vous en aurez terminé avec ce qui suit (en supposant que systemd ubuntu 16.04+, etc.):

Sudo service mongod restart

Évidemment, du point de vue de la sécurité, si vous voulez ouvrir votre réseau à votre réseau/que le monde entier soit conscient des conséquences (le cas échéant)

8
John Culviner

Un autre problème peut être que le port mongodb n'est pas activé. Vérifiez, à partir d'un autre hôte, les ports activés sur votre serveur. Pour cela, vous pouvez utiliser la commande:

Sudo nmap -P0 your_server_ip

Vous pouvez obtenir une réponse comme celle-ci:

Host is up (0.052s latency).
Not shown: 997 filtered ports
PORT    STATE  SERVICE
22/tcp  open   ssh
80/tcp  open   http
443/tcp closed https

Si vous utilisez un serveur virtuel dans le nuage, en tant que AWS, vous devez ajouter une nouvelle règle pour ajouter le port mongodb (27017 par défaut).

Important : Notez qu'avec cette configuration, tout utilisateur peut avoir accès à votre base de données.

enter image description here

3
J.C. Gras