【问题标题】:mongodb atlas connection issues with sslssl的mongodb atlas连接问题
【发布时间】:2020-02-28 00:12:30
【问题描述】:

我已经使用 mongodb atlas 创建了一个集群。但是,我无法使用本地 mongo shell 连接到它。

当我使用下面的连接字符串时,它显示 --ssl unrecognized。

Harshavardhans-MacBook-Pro:bin harshavmb$ mongo "mongodb://m123-rs1-shard-00-00-wn1jr.mongodb.net:27017,m123-rs1-shard-00-01-wn1jr.mongodb.net:27017,m123-rs1-shard-00-02-wn1jr.mongodb.net:27017/test?replicaSet=m123-rs1-shard-0" --authenticationDatabase admin --ssl --username mongoadmin --password *****

解析命令行时出错:无法识别的选项“--ssl” 尝试“mongo --help”了解更多信息

如果我删除 --ssl 并尝试,我会看到以下 o/p。

Harshavardhans-MacBook-Pro:bin harshavmb$ mongo "mongodb://m123-rs1-shard-00-00-wn1jr.mongodb.net:27017,m123-rs1-shard-00-01-wn1jr.mongodb.net:27017,m123-rs1-shard-00-02-wn1jr.mongodb.net:27017/test?replicaSet=m123-rs1-shard-0" --authenticationDatabase admin --username mongoadmin --password ****
MongoDB shell version: 3.2.10
connecting to: mongodb://m123-rs1-shard-00-00-wn1jr.mongodb.net:27017,m123-rs1-shard-00-01-wn1jr.mongodb.net:27017,m123-rs1-shard-00-02-wn1jr.mongodb.net:27017/test?replicaSet=m123-rs1-shard-0
2017-03-18T14:19:00.820+0530 I NETWORK  [thread1] Starting new replica set monitor for m123-rs1-shard-0/m123-rs1-shard-00-00-wn1jr.mongodb.net:27017,m123-rs1-shard-00-01-wn1jr.mongodb.net:27017,m123-rs1-shard-00-02-wn1jr.mongodb.net:27017
2017-03-18T14:19:00.820+0530 I NETWORK  [ReplicaSetMonitorWatcher] starting
2017-03-18T14:19:06.255+0530 I NETWORK  [thread1] Socket recv() timeout  35.167.185.140:27017
2017-03-18T14:19:06.258+0530 I NETWORK  [thread1] SocketException: remote: (NONE):0 error: 9001 socket exception [RECV_TIMEOUT] server [35.167.185.140:27017] 
2017-03-18T14:19:07.040+0530 I NETWORK  [thread1] Socket recv() errno:54 Connection reset by peer 35.162.95.185:27017
2017-03-18T14:19:07.040+0530 I NETWORK  [thread1] SocketException: remote: (NONE):0 error: 9001 socket exception [RECV_ERROR] server [35.162.95.185:27017] 
2017-03-18T14:19:07.757+0530 I NETWORK  [thread1] Socket recv() errno:54 Connection reset by peer 35.162.83.174:27017
2017-03-18T14:19:07.757+0530 I NETWORK  [thread1] SocketException: remote: (NONE):0 error: 9001 socket exception [RECV_ERROR] server [35.162.83.174:27017] 
2017-03-18T14:19:07.757+0530 W NETWORK  [thread1] No primary detected for set m123-rs1-shard-0
2017-03-18T14:19:08.985+0530 I NETWORK  [thread1] Socket recv() errno:54 Connection reset by peer 35.162.95.185:27017
2017-03-18T14:19:08.985+0530 I NETWORK  [thread1] SocketException: remote: (NONE):0 error: 9001 socket exception [RECV_ERROR] server [35.162.95.185:27017] 
2017-03-18T14:19:09.702+0530 I NETWORK  [thread1] Socket recv() errno:54 Connection reset by peer 35.162.83.174:27017
2017-03-18T14:19:09.702+0530 I NETWORK  [thread1] SocketException: remote: (NONE):0 error: 9001 socket exception [RECV_ERROR] server [35.162.83.174:27017] 
2017-03-18T14:19:10.419+0530 I NETWORK  [thread1] Socket recv() errno:54 Connection reset by peer 35.167.185.140:27017
2017-03-18T14:19:10.419+0530 I NETWORK  [thread1] SocketException: remote: (NONE):0 error: 9001 socket exception [RECV_ERROR] server [35.167.185.140:27017] 
2017-03-18T14:19:10.419+0530 W NETWORK  [thread1] No primary detected for set m123-rs1-shard-0
2017-03-18T14:19:11.648+0530 I NETWORK  [ReplicaSetMonitorWatcher] Socket recv() errno:54 Connection reset by peer 35.162.95.185:27017
2017-03-18T14:19:11.648+0530 I NETWORK  [thread1] Socket recv() errno:54 Connection reset by peer 35.167.185.140:27017
2017-03-18T14:19:11.648+0530 I NETWORK  [ReplicaSetMonitorWatcher] SocketException: remote: (NONE):0 error: 9001 socket exception [RECV_ERROR] server [35.162.95.185:27017] 
2017-03-18T14:19:11.648+0530 I NETWORK  [thread1] SocketException: remote: (NONE):0 error: 9001 socket exception [RECV_ERROR] server [35.167.185.140:27017] 
2017-03-18T14:19:12.364+0530 I NETWORK  [ReplicaSetMonitorWatcher] Socket recv() errno:54 Connection reset by peer 35.162.83.174:27017
2017-03-18T14:19:12.365+0530 I NETWORK  [ReplicaSetMonitorWatcher] SocketException: remote: (NONE):0 error: 9001 socket exception [RECV_ERROR] server [35.162.83.174:27017] 
2017-03-18T14:19:12.365+0530 W NETWORK  [ReplicaSetMonitorWatcher] No primary detected for set m123-rs1-shard-0
2017-03-18T14:19:14.731+0530 I NETWORK  [thread1] Socket recv() errno:54 Connection reset by peer 35.162.83.174:27017
2017-03-18T14:19:14.731+0530 I NETWORK  [thread1] SocketException: remote: (NONE):0 error: 9001 socket exception [RECV_ERROR] server [35.162.83.174:27017] 
2017-03-18T14:19:14.731+0530 W NETWORK  [thread1] No primary detected for set m123-rs1-shard-0
2017-03-18T14:19:15.845+0530 I NETWORK  [thread1] Socket recv() errno:54 Connection reset by peer 35.162.95.185:27017
2017-03-18T14:19:15.845+0530 I NETWORK  [thread1] SocketException: remote: (NONE):0 error: 9001 socket exception [RECV_ERROR] server [35.162.95.185:27017] 
2017-03-18T14:19:16.563+0530 I NETWORK  [thread1] Socket recv() errno:54 Connection reset by peer 35.167.185.140:27017
2017-03-18T14:19:16.563+0530 I NETWORK  [thread1] SocketException: remote: (NONE):0 error: 9001 socket exception [RECV_ERROR] server [35.167.185.140:27017] 
2017-03-18T14:19:17.176+0530 I NETWORK  [thread1] Socket recv() errno:54 Connection reset by peer 35.162.83.174:27017
2017-03-18T14:19:17.177+0530 I NETWORK  [thread1] SocketException: remote: (NONE):0 error: 9001 socket exception [RECV_ERROR] server [35.162.83.174:27017] 
2017-03-18T14:19:17.177+0530 W NETWORK  [thread1] No primary detected for set m123-rs1-shard-0
2017-03-18T14:19:17.181+0530 E QUERY    [thread1] Error: connect failed to replica set m123-rs1-shard-0/m123-rs1-shard-00-00-wn1jr.mongodb.net:27017,m123-rs1-shard-00-01-wn1jr.mongodb.net:27017,m123-rs1-shard-00-02-wn1jr.mongodb.net:27017 :
connect@src/mongo/shell/mongo.js:223:14
@(connect):1:6

exception: connect failed

有趣的是,我能够使用 java 驱动程序连接到集群。只有shell有这个问题。

为了解决这个 ssl 问题,Google 搜索了很多,但找不到任何有用的链接。

任何帮助将不胜感激。

提前致谢。

【问题讨论】:

    标签: mongodb ssl


    【解决方案1】:

    解析命令行时出错:无法识别的选项“--ssl”尝试“mongo--help”以获取更多信息

    MongoDB Atlas requires SSL/TLS 用于所有连接。此命令行错误表明您的 mongo shell 版本不包含 SSL/TLS 支持。

    根据您的喜好,您可以使用以下命令安装适当的mongo shell 版本:

    • Homebrew: brew install mongodb --with-openssl.
    • MongoDB Download Center。注意:默认应该是下载支持 SSL 的二进制文件,但下拉列表中也提供非 SSL 下载。

    通常最好安装打包版本(例如 Homebrew),因为这样可以简化管理mongod 服务和更新到新版本的过程。如果您想运行多个版本的 MongoDB 或将文件隔离到特定目录,二进制下载可能更相关,但不包括服务包装器或默认配置文件等便利。

    【讨论】:

    • 感谢您的回复。我得到了这个问题。我已将 Mongo 3.2 二进制文件复制到 /usr/local/bin 目录,因此这不允许更新版本的 mongo 二进制文件(3.4)。因此,最终我不得不从 /usr/local/bin 目录中删除二进制文件并粘贴 3.4 的二进制文件,这解决了 ssl 问题。再次感谢您的回复。
    【解决方案2】:

    您必须拥有带有 SSL/TSL 的 mongodb,因为 MongoDB Atlas 需要它来进行所有连接。

    你可以通过运行以下命令获得。

    brew install mongodb --with-openssl
    

    并将您的 mongodb 升级到 3.4.4。

    brew upgrade mongodb
    

    然后尝试通过 mongo shell 连接到 mongo 云。

    【讨论】:

      【解决方案3】:

      最近 MongoDb Atlas 将其证书从 Digicert 切换到 LetsEncrypt(2020 年 2 月),对于没有 LetsEncrypt 的证书存储可能存在问题。

      临时绕过是在连接字符串的末尾包含sslVerifyCertificate=false。但解决方案是更新您的操作系统或驱动程序库,使其具有包含 LetsEncrypt 证书的版本。

      【讨论】:

      • 并在 spark.read.format("mongo").... option("sslVerifyCertificate", "false").load
      【解决方案4】:

      我已将 Mongo 3.2 二进制文件复制到 /usr/local/bin 目录,因此这不允许更新版本的 mongo 二进制文件 (3.4)。因此,最终我不得不从 /usr/local/bin 目录中删除二进制文件并粘贴 3.4 的二进制文件,这解决了 ssl 问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-07
        • 2017-11-25
        • 2020-08-11
        • 1970-01-01
        • 1970-01-01
        • 2020-11-27
        • 2020-08-16
        • 1970-01-01
        相关资源
        最近更新 更多