Невозможно запросить Oplog в мангусте

Я запрашиваю mongo oplog в MongoLabs mongoDb. Поскольку Mongolabs не позволяет создавать пользователя для локального пользователя, я создал oplog-reader в admin, но он выдает ошибку, показывающую, что он не авторизован:

Фрагмент кода:

var oplogURL = 'mongodb://<oplog-user>:<password>@node1,node2:port/admin?replicaSet=rs-<relpset>';
var allLocalURL = 'mongodb://<oplog-user>:<password>@node1,node2:port/local?replicaSet=rs-<relpset>'; //user on admin  with "readWriteAnyDatabase" permisson, trying to use local db
var allReaderURL='mongodb://<user>:<password>@node1,node2:port/admin?replicaSet=rs-<relpset>';   //user on admin  with "readWriteAnyDatabase" permisson

var db = mongoose.createConnection(oplogURL,{replset: { poolSize: 50 }}, function (err, res){
    if (err) {console.log("Oops!"); console.log(err);}

});

var opschema = new mongoose.Schema({v:"Number", op:"String", ns:"String"}, { strict: false});
var oplogModel = db.model('oplogModel', opschema, 'oplog.rs');

oplogModel.find().exec(function(err, res){
//oplogModel.find().sort('-ts').limit(1).select('ts').exec(function(err, res){
    if (err) {console.log("Oopps!"); console.log(err);}
    console.log (res);
});

Я получил :

{ [MongoError: not authorized for query on admin.oplog.rs]
    name: 'MongoError',
        message: 'not authorized for query on admin.oplog.rs',
    '$err': 'not authorized for query on admin.oplog.rs',
    code: 13 }

Когда я использую allLocalURL:

{ [MongoError: not authorized for query on local.oplog.rs]
    name: 'MongoError',
        message: 'not authorized for query on local.oplog.rs',
    '$err': 'not authorized for query on local.oplog.rs',
    code: 13 }

Когда я использую allReaderURL: []

Но я могу войти в оболочку mongo и запросить oplog, используя пользователя oplog-reader и переключив базу данных на локальную. Я также могу отслеживать oplog с помощью mongo-oplog, используя oplog-user в admin.

Как мне создать URL-адрес/запрос mongo для получения данных из oplog.rs??


person Shipra    schedule 21.03.2016    source источник
comment
Я действительно не могу понять, почему люди напрямую запрашивают oplog. Вы не должны каким-либо образом манипулировать оплогом. Это для сервера MongoDB, поэтому, пожалуйста, не связывайтесь с ним.   -  person Saleem    schedule 22.03.2016
comment
@Saleem манипулирует? Здесь нет ничего, что могло бы попытаться изменить содержимое оплога. Запрос oplog — очень полезная вещь, так как он позволяет инициировать действия при обновлениях/вставках и т. д. Фреймворки, такие как метеор, используют его для своих функций реактивности именно таким образом. Что касается ошибки в вопросе, это довольно простой случай, когда рассматриваемой учетной записи не хватает разрешений на запрос. Поэтому это просто вопрос установки прав пользователя. Вы можете задать этот вопрос на dba.stackexchange.com, поскольку речь идет о настройке разрешения пользователя.   -  person Blakes Seven    schedule 22.03.2016
comment
@Saleem Вопрос не об этом. Поэтому ваш комментарий просто болтовня.   -  person Blakes Seven    schedule 22.03.2016
comment
@Saleem Мне невинно нужно узнать отметку времени последней операции на монго.   -  person Shipra    schedule 22.03.2016
comment
Пожалуйста, не делайте кросспост: dba. stackexchange.com/questions/132933/   -  person Blakes Seven    schedule 22.03.2016


Ответы (1)


Это упоминалось в документах mlab, строка подключения должна быть следующей:

mongodb://<dbuser>:<dbpassword>@ds012345-a0.mlab.com:56789,ds012345-a1.mlab.com:56790/local?replicaSet=rs-ds012345&authSource=admin

person Shipra    schedule 22.03.2016