当前位置: 首页 > 知识库问答 >
问题:

将mongocxx连接到mongodb服务器时出错:SSL支持不可用

仲孙疏珂
2023-03-14

使用mongocxx 3.3或mongo cxx 3.4稳定版本,我正在尝试连接到mongo atlas实例。这是我的基本代码:

#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>

mongocxx::instance inst{};    
mongocxx::uri uri = mongocxx::uri("mongodb+srv://...");
mongocxx::client conn(uri);
mongocxx::database db = conn["test"];

我已经测试了几种替代方案,比如使用客户端选项(如这里所解释的:http://Mongocxx.org/mongocxx-v3/configuration/),以及设置一个pem文件路径,如这里所解释的:Mongocxx无法用SSL连接到mongoDB。

我总是有以下错误:

terminate called after throwing an instance of 'mongocxx::v_noabi::exception'
what():  SSL support not available
Aborted (core dumped)

共有1个答案

姚培
2023-03-14

出现此错误是因为C和C++驱动程序中的一个或两个配置时没有SSL支持。C++驱动程序构建默认支持SSL(查找mongocxx_enable_sslCMake选项)。所以最有可能的解释是底层C驱动程序是在没有SSL的情况下构建的,第二种最有可能的解释是C驱动程序确实内置了SSL支持,但是在构建C++驱动程序时它被明确设置为off。您可以通过在C驱动程序头中查找mongoc_enable_ssl的值来验证C驱动程序的状态。如果启用了它,它应该如下所示:

$ find /usr/local/Cellar/mongo-c-driver/1.14.0/include -type f -name "*.h" | xargs grep 'MONGOC_ENABLE_SSL '
/usr/local/Cellar/mongo-c-driver/1.14.0/include/libmongoc-1.0/mongoc/mongoc-config.h: * MONGOC_ENABLE_SSL is set from configure to determine if we are
/usr/local/Cellar/mongo-c-driver/1.14.0/include/libmongoc-1.0/mongoc/mongoc-config.h:#define MONGOC_ENABLE_SSL 1
/usr/local/Cellar/mongo-c-driver/1.14.0/include/libmongoc-1.0/mongoc/mongoc-config.h:#if MONGOC_ENABLE_SSL != 1

当然,您应该将上面的include目录的路径替换为安装C驱动程序的实际位置。

如果您在其中看到了#define mongoc_enable_ssl1以外的任何内容,那么您的C驱动程序没有启用SSL支持,您需要重新构建它才能具有SSL支持。

 类似资料:
  • 所以我现在正在编写一个web应用程序,我需要数据库,所以我决定使用mongodb和Mongoose。到目前为止,我在localhost上测试了所有的内容,它都起作用了,但我想把数据移到服务器上。我听说过Atlas,自己注册并“上传”了数据。 现在我想通过Node.js应用程序连接到集群。 我在连接您的应用程序点得到了mongodb Atlas站点的字符串 然后我交换了我的密码。 这也没用。 这是错

  • 问题内容: 因此,我目前正在使用Web应用程序,并且需要数据库,因此我决定使用mongodb和mongoose。到目前为止,我已经在localhost上测试了所有内容,并且一切正常,但是我想将数据移至服务器。我听说过Atlas,并进行了注册并“上传”了数据。 现在,我想通过node.js应用程序连接到集群。 我在 连接您的应用程序* 点获得了mongodb Atlas网站的字符串 * 然后我交换了

  • 下面是/etc/kafka/connect-MongoDB-source.properties中的MongoDB配置 但是低于误差 以独立模式运行连接器。 我在debezium-debezium-连接器-mongob-1.0.0/debezium-connector-mongodb-1.0.0.Final.jar 类路径的设置如下 使用插件路径,我看到它能够注册和加载所有必需的插件。 但最后还是同

  • 我在Ubuntu14.04服务器中安装了mongodb 我无法通过“mongoimport”,“mongodump”,“mongostat”等连接到mongodb。它始终显示“无法访问的服务器” 不知何故,我能够与Mongo Shell建立联系 起初,我怀疑它是否是由我的iptables引起的,所以我刷新了所有iptables规则并为所有接受创建了规则,但它仍然相同 我搜索了stackOverfl

  • 初始化-iMac:桌面初始化$openssl s_client-connect gateway.sandbox.push.apple.com:2195-cert pushchatcert.pem-key pushchatkey.pem 终端响应: CONNECTED(00000003)深度=1/c=US/O=Entrust,INC./OU=www.Entrust.net/RPA是通过引用合并的/O

  • 这就是第一台服务器的样子: 这是第二台服务器的样子: 第一台服务器运行良好,但当我试图运行第二台服务器时,我会得到follwing错误,这意味着到第一台服务器的连接失败。如果有人能帮助我,我会很高兴的!