对 MongoDB 3 的 rmongodb 支持
Posted
技术标签:
【中文标题】对 MongoDB 3 的 rmongodb 支持【英文标题】:rmongodb support for MongoDB 3 【发布时间】:2015-06-26 04:54:20 【问题描述】:我正在构建一个 R 脚本,我需要在其中通过身份验证连接到 MongoDB 并使用 rmongodb 处理从数据库中获取的数据> 包。为此,我在 3.0.4 版 中创建了一个新的 MongoDB 用户,并且从 R 脚本 连接到 mongoDB 身份验证失败。 此外,用户通过 mongo shell 成功验证。 当我对在 MongoDB 版本 2.x 中创建的用户进行身份验证时,身份验证也可以正常工作。
以下是我们在 R 脚本中用于连接 Mongo 数据库的代码 sn-p。
mongo
在执行上述代码 sn-p 时,我们收到以下响应
错误:加载所需的包:rmongodb 身份验证失败。
请建议我解决 rmongodb 包中身份验证失败问题的适当解决方案。
【问题讨论】:
向我们展示您用于连接 MongoDB 的代码和错误消息(如果需要,请隐藏密码)。 @Spacedman 我已经包含了有问题的代码 sn-p 和错误消息 【参考方案1】:rmongodb
(截至 1.8.0)使用旧版 MongoDB C 驱动程序,该驱动程序尚不完全支持 MongoDB 3.0。特别是,它不支持使用新的 SCRAM-SHA-1 默认身份验证或可选的 WiredTiger 存储引擎。
Github 中有一个 rmongodb
问题跟踪此问题:Compatibility with version 3.0 of MongoDB。
在rmongodb
更新之前,您的选项(按照麻烦最少到最多的顺序)包括:
使用支持 MongoDB 3.x 的不同驱动程序(即RMongo 0.1.0 or newer)
使用 MongoDB 2.6
使用 MongoDB 3.x 但降级到较旧的 MONGO-CR 身份验证(并且不要使用 WiredTiger 或任何替代存储引擎)
【讨论】:
注:看起来 RMongo 0.1.0 还没有登陆 CRAN,所以你可能需要从 github 上的 master 分支构建包。 我已将 MongoDB 3 配置为支持 MONGODB-CR 身份验证,因此用户已成功通过身份验证,R 脚本也能够使用 WiredTiger 存储引擎访问集合 @RubinPorwal 很高兴听到你成功了!除了身份验证之外,在 MongoDB 3.0 中使用较旧驱动程序的主要问题是,如果您的服务器使用的是 WiredTiger 等非默认存储引擎,则无法列出集合或索引。驱动程序需要实现新的listCollections
和listIndexes
服务器命令。【参考方案2】:
我自己刚刚经历了这个,我想我会加两分钱,以防它对某人有帮助。
@Stennie 正是针对身份验证的目标。因此,如果您想使用 mongo 3,其运行方式如下(这是来自 ubuntu 安装)。
1) sudo nano /etc/mongod.conf
2) Comment out the "auth=TRUE" line
3) sudo service mongod restart
4) login to mongo shell (now with no authentication so everything is open)
5) use admin
6) Execute the following:
var schema = db.system.version.findOne("_id" : "authSchema")
schema.currentVersion = 3
db.system.version.save(schema)
(the above 3 commands are from here: https://jira.mongodb.org/browse/SERVER-17459)
7) create your users in the appropriate database
8) to make sure the right credentials are set up, type db.system.users.find() and amke sure they have the MONGODB-CR credentials
9) quit mongo
10) ucomment out the authentication line in /etc/mongod.conf
11) restart mongodb using sudo service mongod restart
现在应该可以工作了!我希望对某人有所帮助...
【讨论】:
以上是关于对 MongoDB 3 的 rmongodb 支持的主要内容,如果未能解决你的问题,请参考以下文章
使用 rmongodb 在 R 中运行高级 MongoDB 查询