Getting MongoDB on Linux to listen to remote connections

LinuxNetworkingMongodb

Linux Problem Overview


I've successfully installed MongoDB on Windows (on a local machine) as a service, but now I want to move MongoDb to a separate server. So I extracted the tarball to a virtual server on network (running linux).

When I connected to the server ("testmongoserver") using PuTTY from my local machine, I started the mongod server and it told me that it was listening to the default 28017 port. The mongo console is also working and allowed me to create a new database (testdb) and add users to it.

However, I could not access the server from remote. When I type testmongoserver:28017 it doesn't open the HTTP console as localhost:28017 on my local machine does. I also can't connect using official drivers and providing a connectionstring.

What are the neccesarry steps to install MongoDB on Linux, so that I could access it from a remote machine with a connectionstring and use its HTTP console via testmongoserver:28017

Thanks!

Linux Solutions


Solution 1 - Linux

1. Bind IP option

Bind IP is a MongoDB option that restricts connections to specifics IPs.

Have a look at your mongod configuration file, most of the time bind_ip is set to 127.0.0.1 for obvious security reasons. You can:

  1. Add your desired IP by concatenating a list of comma separated values to bind MongoDB to multiple IP addresses.
  2. Remove or comment (with # character) the bind_ip line. But be aware that all remote connection will be able to connect your MongoDB server!

More about bind_ip configuration option: https://docs.mongodb.com/manual/reference/configuration-options/#net.bindIp

Bind IP can also be set as a command argument: http://docs.mongodb.org/manual/reference/program/mongod/#cmdoption--bind_ip

2. Firewall

Check that you are not running behind a firewall

Solution 2 - Linux

Make sure in your /etc/mongodb.conf file you have the following line,

bind_ip = 0.0.0.0

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

Solution 3 - Linux

  1. Run netstat -a on mongo server and check a port.
  2. Check DNS settings and check that linux server allows external connections.
  3. Check that mongodb can accept external/remote connection.

Default port for mongo is 27017. 28017 - port for webstats.

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

Solution 4 - Linux

Just had this issue and this fixed it:

Edit /etc/mongod.conf with sudo nano /etc/mongod.conf ensure that the net section looks like below (localhost binding by default doesn't allow for remote access):

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

Make sure to restart mongod when you are done with above with below (assuming systemd ubuntu 16.04+ etc.):

sudo service mongod restart

Obviously from a security perspective if you are going to be opening up mongo to your network/the world be aware of the implications of this (if any)

Solution 5 - Linux

Another problem may be that the mongodb port is not enabled. Check, from another host, the ports enabled on your server. For that you can use the command:

sudo nmap -P0 your_server_ip

You can get an answer like this:

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

If you use a virtual server in the cloud, as AWS, you need to add a new rule to add mongodb port (27017 by default).

Important: Note that with this configuration anyone can have access to your database

enter image description here

Solution 6 - Linux

I fixed by below reference :

https://medium.com/founding-ithaka/setting-up-and-connecting-to-a-remote-mongodb-database-5df754a4da89

Actually, first i changed my bindIp from 127.0.0.1 to 0.0.0.0 in mongod.conf, and enable security:

security:
  authorization: "enabled"

then i restarted mongod using sudo service mongod restart.(because of new changes in mongod.conf), after that set firewall to open mongod running port (by iptables) and create a new user in admin db with new access (based on this link : https://medium.com/mongoaudit/how-to-enable-authentication-on-mongodb-b9e8a924efac), finally test open ports in my server from outside with (https://www.yougetsignal.com/tools/open-ports/) and connected successfully to remote mongod using mongocompass.exe.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser315648View Question on Stackoverflow
Solution 1 - LinuxYves M.View Answer on Stackoverflow
Solution 2 - LinuxvictorkurauchiView Answer on Stackoverflow
Solution 3 - LinuxAndrejView Answer on Stackoverflow
Solution 4 - LinuxJohn CulvinerView Answer on Stackoverflow
Solution 5 - LinuxJ.C. GrasView Answer on Stackoverflow
Solution 6 - LinuxJavad AsoodehView Answer on Stackoverflow