在 Linux 上让 MongoDB 监听远程连接

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

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用