【问题标题】:Can't connect Mongo shell to Mongo Atlas M0 using mongodb+srv无法使用 mongodb+srv 将 Mongo shell 连接到 Mongo Atlas M0
【发布时间】:2019-04-28 18:41:44
【问题描述】:

我正在尝试通过mongo+srv 连接到我的 MongoDB Atlas Cloud 集群,如下所示:

mongo "mongodb+srv://cluster0-mhzdc.mongodb.net/test" --username myuser

我收到了这样的回复:

DNSHostNotFound: Failed to look up service "_mongodb._tcp.cluster0-mhzdc.mongodb.net": Undefined error: 0
try 'mongo --help' for more information

我正在使用以下版本的 Mongo 客户端:

mongo --version
MongoDB shell version v4.0.5
git version: 3739429dd92b92d1b0ab120911a23d50bf03c412
allocator: system
modules: none
build environment:
    distarch: x86_64
    target_arch: x86_64

我在网上找不到任何解决方案。有什么想法有什么问题吗?这是给定版本的 Mongo shell 客户端中的错误吗?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    看起来像错误 34117,仍未解决:

    https://jira.mongodb.org/browse/SERVER-34117

    要解决此错误,请检查您的笔记本上是否有 DNS 解析器处于活动状态。 在窗户上:

    ipconfig /displayDNS
    

    查看当前的 DNS 解析器缓存。 您甚至可以尝试使用以下命令擦除缓存:

    ipconfig /flushdns
    

    然后重试。 如果您正在使用 linux ubuntu,请尝试以下命令:

    named -v
    

    检查是否已安装 DNS 解析器软件。 如果没有:

    sudo apt update
    sudo apt install bind9 bind9utils bind9-doc bind9-host
    

    安装所需的包,然后启动服务:

    sudo systemctl start bind9
    

    然后重试。

    在 Mac OSX 上,命令是:

    sudo killall -HUP mDNSResponder;sudo killall mDNSResponderHelper;sudo dscacheutil -flushcache
    

    【讨论】:

    • 做到了!谢谢!我在 OSX 上,所以我将添加命令以刷新该 OS 上的 DNS。
    • DNS 使用 Spectrum 阻止对 MongoDB Atlas 的 srv 请求。我不得不将我的 DNS 服务器更改为 Google 的 8.8.8.8
    【解决方案2】:

    同样的事情发生在我身上,但就在我更换了我的互联网提供商之后。之前,我可以毫无问题地连接到 mongo atlas。

    我猜这是因为我的互联网提供商的 DNS 解析器无法解析 uri 以连接到 mongodb atlas。

    解决方案 -> 更改我电脑上的 DNS 解析器:

    1. 打开控制面板。
    2. 点击查看网络状态和任务
    3. 点击窗口左侧的更改适配器设置。
    4. 双击您正在使用的 Internet 连接的图标。
    5. 单击“属性”按钮。
    6. 单击并突出显示 Internet 协议版本 4 (TCP/IPv4),然后单击属性。
    7. 如果尚未选择,请选择使用以下 DNS 服务器地址选项。
    8. 输入新的 DNS 地址并单击“确定”并关闭所有其他窗口。

    我使用了谷歌公共 dns 8.8.8.8。

    之后我可以再次使用我的 mongo shell 或 compass 连接到 mongo atlas。

    希望对某人有所帮助..

    【讨论】:

      【解决方案3】:

      Comcast Xfinity 也有这个问题。对于那些运行 Ubuntu 18.04 或类似版本的用户,我必须编辑(您需要 root 权限)/etc/dhcp/dhclient.conf 文件,并添加到以下行: supersede domain-name-servers 8.8.8.8, 8.8.4.4; 我希望这对某人有帮助,我花了很长时间才弄清楚。 :-)

      【讨论】:

      • DNS 使用 Spectrum 阻止对 MongoDB Atlas 的 srv 请求。我不得不将我的 DNS 服务器更改为 Google 的 8.8.8.8
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      • 2021-09-01
      • 2021-05-13
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多