Getting MongoDB on Linux to listen to remote conne

2019-01-07 06:23发布

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!

5条回答
姐就是有狂的资本
2楼-- · 2019-01-07 06:53

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)

查看更多
beautiful°
3楼-- · 2019-01-07 06:56

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

查看更多
狗以群分
4楼-- · 2019-01-07 06:58
  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

查看更多
Luminary・发光体
5楼-- · 2019-01-07 07:06

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

查看更多
SAY GOODBYE
6楼-- · 2019-01-07 07:10

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

查看更多
登录 后发表回答