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

时间:2011-08-23 10:37:56

标签: linux networking mongodb

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

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

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

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

谢谢!

6 个答案:

答案 0 :(得分:79)

1。绑定IP选项

绑定IP是一个MongoDB选项,用于限制与特定IP的连接。

看看你的mongod配置文件,出于明显的安全原因,大多数情况下 bind_ip 设置为127.0.0.1。你可以:

  1. 通过连接逗号分隔值列表来添加所需的IP,以将MongoDB绑定到多个IP地址。
  2. 删除或评论(#个字符)bind_ip行。但请注意,所有远程连接都可以连接MongoDB服务器!
  3. 有关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。防火墙

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

答案 1 :(得分:33)

确保在/etc/mongodb.conf文件中包含以下行

bind_ip = 0.0.0.0

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

答案 2 :(得分:19)

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

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

答案 3 :(得分:8)

刚刚遇到这个问题并修复了它:

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

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

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

sudo service mongod restart

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

答案 4 :(得分:3)

另一个问题可能是未启用mongodb端口。从另一台主机检查服务器上启用的端口。为此,您可以使用命令:

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

你可以得到这样的答案:

CButton myButtonName;

如果您在云中使用虚拟服务器作为AWS,则需要添加新规则以添加mongodb端口(默认为27017)。

重要:请注意,使用此配置,任何人都可以访问您的数据库

enter image description here

答案 5 :(得分:1)

我是通过以下参考资料解决的:

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

实际上,首先我在 mongod.conf 中将bindIp127.0.0.1更改为0.0.0.0, 并启用安全性:

security:
  authorization: "enabled"

然后,我使用sudo service mongod restart重新启动mongod。(由于mongod.conf中的新更改),然后将防火墙设置为打开mongod运行端口(通过iptables),并在admin数据库中创建一个具有新访问权限的新用户(基于此链接:https://medium.com/mongoaudit/how-to-enable-authentication-on-mongodb-b9e8a924efac),最后使用(https://www.yougetsignal.com/tools/open-ports/)从外部测试服务器中的开放端口,并使用mongocompass.exe成功连接到远程mongod。