在Linux上使用MongoDB来监听远程连接

use*_*648 57 linux networking mongodb

我已经在Windows上(在本地计算机上)成功安装了MongoDB作为服务,但现在我想将MongoDb移动到一个单独的服务器上.所以我将tarball解压缩到网络上的虚拟服务器(运行linux).

当我从本地机器使用PuTTY连接到服务器("testmongoserver")时,我启动了mongod服务器,它告诉我它正在监听默认的28017端口.mongo控制台也在工作,允许我创建一个新数据库(testdb)并向其添加用户.

但是,我无法从远程访问服务器.当我键入testmongoserver:28017它时,不会像localhost:28017在本地计算机上那样打开HTTP控制台.我也无法使用官方驱动程序连接并提供连接字符串.

在Linux上安装MongoDB的必要步骤是什么,以便我可以从具有连接字符串的远程计算机访问它并通过其使用HTTP控制台 testmongoserver:28017

谢谢!

Yve*_* M. 79

1.绑定IP选项

绑定IP是MongoDB选项,它限制与特定IP的连接.

看看你的mongod配置文件,大多数时候bind_ip被设置为127.0.0.1出于明显的安全原因.您可以:

  1. 通过连接逗号分隔值列表来添加所需的IP,以将MongoDB绑定到多个IP地址.
  2. 删除或注释(带#字符)该bind_ip行.但请注意,所有远程连接都能够连接您的MongoDB服务器!

有关bind_ip配置选项的更多信息:https://docs.mongodb.com/manual/reference/configuration-options/#net.bindIp

绑定IP也可以设置为命令参数:http://docs.mongodb.org/manual/reference/program/mongod/#cmdoption--bind_ip

2.防火墙

检查您是否在防火墙后面运行

  • 应该被选为正确的答案.确定问题并解释它. (2认同)

vic*_*chi 34

确保在您的/etc/mongodb.conf文件中有以下行,

bind_ip = 0.0.0.0
Run Code Online (Sandbox Code Playgroud)

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

  • 从配置角度来看,这是一个糟糕的主意.通过注释掉bind_ip行,您将获得相同的结果.我鼓励逗号分隔服务器的特定私有或公共ips:127.0.0.1,10.xxx (6认同)
  • 真的很糟糕的想法,特别是使用mongo时的新漏洞. (4认同)
  • 是的,与生产环境合作是一个不好的想法.如果env = development,此设置将是"可接受的".小心 (3认同)

And*_*kov 20

  1. 在mongo服务器上运行netstat -a并检查端口.
  2. 检查DNS设置并检查linux服务器是否允许外部连接.
  3. 检查mongodb是否可以接受外部/远程连接.

mongo的默认端口是27017. 28017 - webstats的端口.

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

  • 我的问题是#3.这是由于绑定IP设置为127.0.0.1,因为@Yves M.在他的[回答](http://stackoverflow.com/a/18769861/448876)中描述. (6认同)

Joh*_*ner 8

刚刚遇到这个问题并解决了这个问题:

编辑/etc/mongod.confsudo nano /etc/mongod.conf确保网段如下所示(默认情况下localhost绑定不允许远程访问):

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0
Run Code Online (Sandbox Code Playgroud)

确保在完成以上操作时重新启动mongod(假设systemd为ubuntu 16.04+等):

sudo service mongod restart

显然,从安全角度来看,如果你打算将mongo打开到你的网络/全世界都要注意这个含义(如果有的话)