【问题标题】:MongoDB Server Ubuntu 16.04MongoDB 服务器 Ubuntu 16.04
【发布时间】:2017-07-11 14:18:57
【问题描述】:

我已经在我的 Ubuntu 16.04 VPS 上安装了 MongoDB,并允许通过防火墙进行连接。当我使用命令 (mongod) 运行服务器时,它会毫无问题地启动,然后我可以连接到它(使用 RoboMongo 作为测试应用程序)。

但是,当我在启动时自动运行服务(使用 systemctl)时,我无法连接到它。我验证它正在运行,由于地址已经在使用中,我无法自己运行它。

有没有人有这方面的经验,或者关于如何解决这个问题的任何提示?服务器将仅运行 localhost,我将使用 SSH 隧道进行测试,因此无需进行身份验证。

有人吗?

【问题讨论】:

  • 如果您将使用隧道,那么为什么允许通过防火墙进行连接?这没有任何意义
  • 我没有正确解释,我很抱歉。我先在没有 SSH 隧道的情况下对其进行了测试,然后发现了问题。使用 SSH 隧道后问题仍然存在。我现在从防火墙中删除了异常。

标签: mongodb ubuntu robo3t


【解决方案1】:

当您启动 mongod 时,您是否提供了配置文件(使用 --config 或 -f 参数)?如果没有,则默认监听所有接口。

使用 systemctl 启动守护程序时使用的默认配置文件默认仅在 localhost 上侦听,从而防止其在网络上可用。如果您打算使用隧道连接到服务器,这很好。

【讨论】:

  • 不,我没有提供配置文件,但我认为没有必要,因为如果我自己启动它就可以完美运行。从你的回答来看,我是对的。你知道还有什么问题吗?
  • mongod 在没有任何选项的情况下运行时使用默认配置。使用 systemctl 启动 Mongo 通常会导致它在某处读取配置文件(尝试 /etc/mongod.conf)。您如何创建隧道?
  • Robomongo 为您创建 SSH 隧道。我使用用户名/密码进行身份验证。但是,我不明白的是,当我在没有指定任何配置文件的情况下自己运行它时,它应该使用相同的配置,不是吗?
  • 是的,应该。如果您使用更多信息更新您的问题(日志文件将是一个好的开始),那将是一个好主意。也许对 Robomongo 有更多了解的人可以找出问题所在
  • Robomongo 不是问题,因为只要我使用命令启动它,无论有无 ssh 隧道,它都可以正常工作。为了双重测试,我还尝试使用 Windows 的 mongo.exe,只要我自己运行它就可以完美连接。查看日志,它没有报告任何内容。控制台中的错误是connect@src/mongo/shell/mongo.js:234:13 @(connect):1:6 exception: connect failed
猜你喜欢
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多