如何访问oplog MongoDB(MMS副本集)

时间:2014-11-24 19:04:34

标签: mongodb mongodb-mms

我有一个带MMS的MongoDB副本集。我创建了一个具有所有权限的用户(所有可用的MMS)但我无法访问本地数据库和/或oplog colecction。 TRACE:

mydatabse-r1:PRIMARY> use local
switched to db local
mydatabse-r1:PRIMARY> db.oplog.rs.find().pretty();
error: { "$err" : "not authorized for query on local.oplog.rs", "code" : 13 }

我需要将我的Meteor应用程序和其他带有Node.js的应用程序连接到oplog,但我无法访问它。

为什么吗 因为我正在使用Node.js创建一个基于oplog的队列。这是可能的,我成功地在MongoHQ和MongoLab上进行了测试,但现在我需要在我的MMS生产副本集中使用MMS运行它而不创建自定义MongoDB副本集。

1 个答案:

答案 0 :(得分:4)

检查this link

基本上,从mongo 2.6开始,您需要创建一个用户并授予对oplog的访问权限(以及使用正确的凭据访问数据库)

类似的东西:

db.runCommand({ createRole: "oplogger", 
               privileges: [{ resource: { db: 'local', collection: 'oplog.rs'},
                               actions: ['find']}, ],
               roles: [{role: 'read', db: 'local'}] })

完整程序here