让Linux上的MongoDB监听远程连接

让Linux上的MongoDB监听远程连接,linux,networking,mongodb,Linux,Networking,Mongodb,我已经成功地将MongoDB作为服务安装在Windows上(在本地计算机上),但现在我想将MongoDB移动到一个单独的服务器上。所以我将tarball提取到网络上的一个虚拟服务器(运行linux) 当我从本地机器使用PuTTY连接到服务器(“testmongoserver”)时,我启动了mongod服务器,它告诉我它正在侦听默认的28017端口。mongo控制台也在工作,允许我创建一个新的数据库(testdb)并向其中添加用户 但是,我无法从远程访问服务器。当我键入testmongoserve

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

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

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

在Linux上安装MongoDB的必要步骤是什么,这样我就可以通过connectionstring从远程机器访问它,并通过testmongoserver:28017使用它的HTTP控制台

谢谢

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

    1。绑定IP选项 绑定IP是一个MongoDB选项,它将连接限制为特定IP

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

  • 通过连接逗号分隔值列表将MongoDB绑定到多个IP地址,添加所需的IP
  • 删除或注释
    绑定ip
    行(使用
    #
    字符)。但是请注意,所有远程连接都可以连接您的MongoDB服务器 有关
    bind_ip
    配置选项的更多信息:

    绑定IP也可以设置为命令参数:

    2.防火墙
    检查您是否未在防火墙后运行

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

    bind_ip = 0.0.0.0
    

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

    sudo nmap -P0 your_server_ip
    
    你可以得到这样的答案:

    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
    
    如果您在云中使用虚拟服务器(如AWS),则需要添加新规则以添加mongodb端口(默认情况下为27017)

    重要信息:请注意,通过此配置,任何人都可以访问您的数据库


    刚刚出现此问题,此问题已解决:

    使用
    sudo nano/etc/mongod.conf
    编辑
    /etc/mongod.conf
    ,确保网络部分如下所示(默认情况下,本地主机绑定不允许远程访问):

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

    sudo服务mongod重启


    显然,从安全的角度来看,如果您打算向您的网络/世界开放mongo,请注意这一点(如果有)的影响。

    I通过以下引用修复:

    实际上,首先我在mongod.conf中将我的
    bindIp
    127.0.0.1
    更改为
    0.0.0
    , 并实现安全性:

    security:
      authorization: "enabled"
    

    然后,我使用
    sudo服务mongod restart
    重新启动了mongod(因为mongod.conf中有新的更改),然后设置防火墙以打开mongod运行端口(通过iptables),并在admin db中创建一个具有新访问权限的新用户(基于此链接:),最后使用()并使用mongocompass.exe成功连接到远程mongod。

    是否使用了正确的连接字符串?更改了任何设置?确保没有防火墙规则(在任何一侧)阻止您连接到远程服务器。我的问题是#3。这是由于@Yves M.在his中描述的绑定IP设置为127.0.0.1。有时,需要重新启动服务器才能使更改生效。从配置角度来看,这是一个坏主意。通过注释掉bind_ip行,您将获得相同的结果。我建议用逗号分隔服务器的特定私有或公共IP:127.0.0.1,10.x.x.x真是个坏主意,特别是在使用mongo时出现了新的漏洞。是的,在生产环境中使用它是个坏主意。如果env=development,则此设置为“可接受”。小心我在Windows中,没有看到etc/mongod.conf文件。它在哪里,或者我应该把它确切地放在哪里?我试图将它放在我的mongodb.config文件中,但它没有改变任何东西。但是取消注释bind_ip不允许远程访问。必须将其设置为0.0.0.0才能接受来自远程主机的连接。正如其他人所提到的,在prod env中提供一个您希望连接的IP地址列表是实现这一点的方法。应该选择它作为正确答案。我要澄清的是,要接受特定网络适配器上的连接,必须将绑定ip设置为该网络适配器的ip。这不是传入连接的筛选器!正如在前面的文章中所指出的,您还应该使端口27017在本例中可用。此外,您可能存在安全问题,为了减少这些问题,您可以(如前所述)限制端口可访问的IP和/或使用密码创建用户。我最近经历了这个过程,我在这里对整个过程做了一些记录:。
    security:
      authorization: "enabled"