在 Linux 上让 MongoDB 监听远程连接

2024-11-07 08:55:00
admin
原创
62
摘要:问题描述:我已经在 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 加密和网络过滤以确保安全。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   681  
  在项目管理领域,集成产品开发(IPD)流程以其高效、协同的特点,被众多企业视为提升产品竞争力的关键。IPD流程强调跨部门、跨职能的紧密合作,以确保产品从概念到市场各个环节的无缝衔接。然而,实现这一目标并非易事,它需要企业深刻理解并掌握IPD流程中的跨部门协作艺术。本文将深入探讨IPD流程中跨部门协作的三个关键点,旨在为...
IPD项目管理咨询   9  
  掌握IPD流程图:提升团队协作的关键路径在当今快速变化的商业环境中,团队协作的效率与效果直接关系到项目的成功与否。集成产品开发(Integrated Product Development,简称IPD)作为一种先进的研发管理理念,通过跨部门、跨领域的协同工作,能够显著提升产品开发的速度与质量。而IPD流程图,则是这一理...
IPD流程阶段   9  
  IPD流程概述:理解其核心价值与实施背景集成产品开发(Integrated Product Development,简称IPD)是一种先进的产品开发管理理念,它强调跨部门协作、市场导向和快速响应变化的能力。IPD流程不仅关注产品本身的技术创新,更注重将市场、研发、生产、销售等各个环节紧密集成,以实现产品从概念到市场的高...
华为IPD是什么   7  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程以其跨部门协作、高效决策和快速响应市场变化的特点,被众多企业视为提升竞争力的关键。然而,实践IPD流程并非易事,项目管理中的种种错误往往阻碍了其效果的充分发挥。本文旨在深入探讨如何在实施IPD流程时避免这些常见错误,...
IPD框架   7  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用