在Linux上获取MongoDB以侦听远程连接

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

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

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

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

谢谢!

回答(5)

2 years ago

  • 在mongo服务器上运行netstat -a并检查端口 .

  • 检查DNS设置并检查linux服务器是否允许外部连接 .

  • 检查mongodb是否可以接受外部/远程连接 .

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

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

2 years ago

1.绑定IP选项

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

看看你的mongod配置文件,出于明显的安全原因,大部分时间 bind_ip 都设置为 127.0.0.1 . 您可以:

  • 通过连接逗号分隔值列表来添加所需的IP,以将MongoDB绑定到多个IP地址 .

  • 删除或评论(含 # 字符) 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 years ago

确保在 /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 years ago

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

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

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

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

sudo service mongod restart

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

2 years ago

另一个问题可能是未启用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

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

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

enter image description here