在 Linux 上让 MongoDB 监听远程连接

2024-11-07 08:55:00
admin
原创
27
摘要:问题描述:我已经在 Windows 上(在本地计算机上)成功安装了 MongoDB 作为服务,但现在我想将 MongoDb 移至单独的服务器。因此,我将 tarball 解压到网络上的虚拟服务器(运行 Linux)。当我使用 PuTTY 从本地计算机连接到服务器(“testmongoserver”)时,我启动...

问题描述:

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

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

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

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

谢谢!


解决方案 1:

  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

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

  1. 防火墙


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

解决方案 2:

确保/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

解决方案 3:

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

  2. 检查DNS设置并检查Linux服务器是否允许外部连接。

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

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

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

解决方案 4:

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

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

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

完成上述操作后,请确保重新启动 mongod(假设 systemd ubuntu 16.04+ 等):

sudo service mongod restart

显然,从安全角度来看,如果你要向你的网络/世界开放 mongo,请注意这会产生什么影响(如果有的话)

解决方案 5:

另一个问题可能是 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)。

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

在此处输入图片描述

解决方案 6:

要启用与 Linux 上运行的 MongoDB 实例的远程连接并通过连接字符串和 HTTP 控制台访问它,请按照以下步骤操作:

  1. 编辑 MongoDB 配置文件:

* 定位`mongod.conf`,通常位于`/etc/mongod.conf`。
* `bindIp`从更改`127.0.0.1`为`0.0.0.0`监听来自所有 IP 地址的连接。
net:
  bindIp: 0.0.0.0
  port: 27017
* 注意:`27017`是默认的 MongoDB 端口。HTTP 控制台在 上运行`28017`。
  1. 启用安全性:

* 在 中`mongod.conf`,启用授权:
security:
  authorization: "enabled"
  1. 重新启动 MongoDB 服务:

* 重新启动 MongoDB 以应用新设置:
sudo service mongod restart
  1. 配置防火墙:

* 在防火墙中打开 MongoDB 端口(例如,`iptables`端口`27017`):
sudo iptables -A INPUT -p tcp --dport 27017 -j ACCEPT
* 保存`iptables`规则。
  1. 创建 MongoDB 用户:

* 在数据库中创建具有适当权限的用户`admin`。
* 指南:MongoDB 用户创建。
  1. 测试服务器端口可访问性:

* 使用开放端口检查工具验证 MongoDB 端口的可访问性。
  1. 使用 MongoDB Compass 连接:

* 使用 MongoDB Compass 和连接字符串进行连接:
mongodb://username:password@testmongoserver:27017/testdb

通过以下方式访问 HTTP 控制台http://testmongoserver:28017(如果已启用并在端口 28017 上运行)。

安全说明:
确保强大的用户凭证,并考虑 SSL/TLS 加密和网络过滤以确保安全。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用