【问题标题】:MongoServerSelectionError: connection <monitor> to <MyIP> closedMongoServerSelectionError:连接 <monitor> 到 <MyIP> 已关闭
【发布时间】:2022-07-05 01:52:05
【问题描述】:

我已经开始学习 MongoDB,我只是尝试使用 MongoDB Shell 连接到数据库。 我正在使用以下命令。

mongosh "mongodb+srv://cluster0.12345.mongodb.net/myFirstDatabase" --username viveknuna

我已将我当前的 IP 地址添加到 IP 访问列表。但是收到此错误。

MongoServerSelectionError: 连接已关闭

我已经提到了this 问题,并在 IP 访问列表中添加了 0.0.0.0/0(允许从任何地方访问)。它按预期工作。但这是一个安全隐患,有没有什么办法不让所有IP。

仅供参考:我在虚拟机中,也从 VM 运行此命令。

【问题讨论】:

  • "my current IP" 应该是您的公共 IP,即您在 checkip.amazonaws.com 中看到的那个。例如。 curl https://checkip.amazonaws.com/ 来自你的虚拟机
  • @AlexBlex 是的,它是公共 ip,这与我访问 checkip.amazonaws.com 时的相同
  • 您可以远程登录到其中一个节点吗? dig srv _mongodb._tcp.cluster0.12345.mongodb.net +short 获取节点的 url,然后 telnet 从响应中获取端口上的其中一个。
  • 运行此命令dig srv _mongodb._tcp.cluster0.12345.mongodb.net +short 时,我收到错误“挖掘”未被识别为内部或外部命令。仅供参考,我正在使用 Windows 机器@AlexBlex
  • windows是guest还是host还是两者兼有?无论如何,有很多在线服务可以读取 DNS 记录。我相信 mxtoolbox 有 SRV 查找。您将需要在您的机器上使用 telnet 来测试连接性。您是否使用任何代理或 VPN?

标签: mongodb mongodb-atlas mongo-shell


【解决方案1】:

对我来说,发生此错误是因为我的连接字符串错误。具体来说 - 我从我正在学习的课程中复制了示例连接字符串,并用我的凭据替换了用户名和密码。因此,凭据是正确的,但连接字符串的其余部分不正确。

只是为了理解。请看下面:

 mongodb+srv://myusername:mypassword@courseproject.h1mpg.mongodb.net/?retryWrites=true&w=majority" 

myusername 和 mypassword 是正确的,即属于我在 MongoDB atlas 帐户中的集群,但字符串的其余部分是错误的,因为我从某个地方复制它而不是从我自己的 MongoDB atlas 帐户复制它。

所以请务必仔细检查您的整个连接字符串是否正确。

【讨论】:

    猜你喜欢
    • 2021-06-22
    • 2020-06-11
    • 1970-01-01
    • 2022-11-19
    • 2020-10-02
    • 2021-09-12
    • 2023-04-09
    • 2016-07-18
    相关资源
    最近更新 更多