1

我正在尝试使用 rmongodb 登录,但它没有进行身份验证。这是我的连接字符串:

myMongoConnection <- mongo.create(host = "<myip>",db = "geoLoc", username = "<myusername>", password = "<mypassword>")

但是,如果我在我的计算机上打开一个 mongo shell 并输入:

mongo <myip>/geoLoc -u '<myusername>' -p '<mypassword>'

它连接得很好。

此外,如果我登录服务器并通过注释掉来禁用身份验证: auth = true,然后尝试:

myMongoConnection <- mongo.create(host = "<myip>",db = "geoLoc)"

它也可以正常工作。所以这与用户名和密码有关。我不知道什么,因为我知道它们是“正确的”,因为我可以用它们登录!

4

1 回答 1

2

您可能正在运行 MongoDB 3.0 或更高版本的服务器版本(正在编写的 3.x 系列),它具有更新的安全身份验证机制(来自 MONGODB-CR 的 SCRAM-SHA-1),它与旧的驱动程序版本不兼容不支持。

截至当前rmongodb软件包发布(编写版本 1.8.0),此驱动程序基于旧版 C 驱动程序实现,与新的身份验证方法不兼容。正如该存储库上的问题中所指出的那样,作者注意到此驱动程序依赖性并指出该程序包需要重写以利用支持新身份验证方法的新 API。

在撰写本文时,除了建立一个目前尚未准备好发布的新分支外,似乎没有任何举措来进行任何此类更改。

因此,您目前的选择是:

  • 在可能的情况下无需身份验证即可工作
  • 将 MongoDB 服务器版本降级为支持旧身份验证的版本
  • 寻找支持新身份验证的其他驱动程序实现。

所以“rmongodb”本身目前无法连接到 MongoDB 3.x 服务器。如果您能够通过完整的身份验证支持将其开发到下一个版本中,则可以应用其他选择之一,和/或自己为存储库做出贡献。

在此答案中链接的问题中链接或讨论了其他可能的驱动程序替代方案。

于 2015-07-28T02:17:35.593 回答