【问题标题】:Robomongo: Cannot connect to replica set. Set's primary is unreachableRobomongo:无法连接到副本集。 Set 的主节点不可达
【发布时间】:2021-02-09 05:31:52
【问题描述】:

我正在将 mLab 从 Heroku 迁移到 MongoDB Atlas。作为步骤之一,我想检查是否与新创建的集群建立了连接。我将Robo3T(以前的 Robomongo)用于 Heroku mLab 实例。但它不适用于阿特拉斯。从 URL 创建连接时出现以下错误:

Cannot connect to replica set "SampleProject"[cluster-abcd12ef-shard-00-00.a0b1c.mongodb.net:27017]. 
Set's primary is unreachable.

Reason:
Failed to initialize MongoWorker. Reason: connect failed

尝试调整设置,但那里的一切看起来都正确,就像 Heroku 一样,唯一的主机和端口不同。

还查看了similar questionsGitHub isssues,但没有任何帮助。

【问题讨论】:

    标签: mongodb heroku mlab mongodb-atlas robo3t


    【解决方案1】:

    确保您已在 mongodb 云门户上将您的 IP 地址列入白名单 Network Access

    【讨论】:

    • 使用 DigitalOcean Mongodb 集群托管服务,这似乎是关键步骤 + 在 TLS 选项卡上指定“自签名”证书类型,而无需
    【解决方案2】:

    如果有人在使用 Robo3T 版本 1.4.4 时遇到此错误,我们可以通过更新 robo3t.json 文件来解决此问题(启用日志,您可以看到此文件的本地化位置)

    通过启用日志,您将看到通过消息保存的设置以Info: Settings saved to: {robo3t.json_path}开头的位置

    • 照常粘贴您的 URI,然后照常单击 From URI,然后单击保存。
    • 关闭 Robo3T(重要)
    • 使用一些文本编辑器打开robo3t.json 文件。
    • connections范围内,查找刚刚从上述步骤创建的连接,在ssl对象内找到allowInvalidCertificates属性,将值从false更改为true,然后保存文件
    • 打开Robo3T然后连接到连接,应该可以正常连接

    【讨论】:

    • 谢谢,兄弟!您为我节省了几个小时的工作时间
    【解决方案3】:

    首先,检查您是否使用最新的 Robo3T。 MongoDB Atlas 使用 mongodb+srv:// 协议,以前不支持该协议。

    之后,请按照以下清单进行:

    • 通过从 MongoDB Atlas 复制粘贴 URL 使用 import From SRV
    • MongoDB Atlas 甚至为免费的 Sandbox (Atlas M0) 帐户使用副本集。因此,在创建过程中请确保您使用了该类型;
    • 填写或勾选所有集群成员;
    • 应该设置Set Name

    重要区别在身份验证选项卡上:

    • Database 应该是 admin 不像数据库名称(在 Heroku 上使用),
    • Auth Mechanism 应该是 SCRAM-SHA-1
    • 检查Manually specify visible databases 并在此处输入admin,<you database name from Heroku>

    在 TLS 选项卡上:

    • 检查Use TLS protocol
    • Authentication method - Self-signed Certificate

    现在应该可以了。

    P.S. 以前,我也遇到过数据库与 Heroku 上相同的数据库名称和用户名相同的问题,我还认为 Auth Mechanism 应该是 MONGODB-CR。但这没有用。

    P.P.S.如果您没有看到 Manually specify visible databases - 请检查您是否拥有最新版本 (1.4.+) 的 Robo3T(以前称为 Robomongo)

    【讨论】:

    • 刚刚在 Mac 和 Windows 上下载。 Mac 可以工作,而 Windoes 不能。确认所有输入/表单字段与“答案”匹配。 Windows 内部版本是 Robo 3T 1.4.3(内部版本 48f7dfde - 3/2021)。有时我会收到原始线程中所述的错误,有时应用程序会意外崩溃。
    • @Greg,在 1.4.1 上为我工作。对于更高版本,我看到issues on GitHub。您也可以尝试使用 1.4.1。顺便说一句,您的 MongoDB 托管在哪里?
    • 太棒了。细节简直完美。没有在其他地方找到它。非常感谢
    猜你喜欢
    • 2014-06-25
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多