开发者

Getting MongoDB on Linux to listen to remote connections

开发者 https://www.devze.com 2023-03-29 20:57 出处:网络
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 (runni

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 r开发者_运维百科emote. 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!


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


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


  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


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)


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

Getting MongoDB on Linux to listen to remote connections


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消