2017-09-13 1 views
0

Ich habe eine Mongo-Datenbank eingerichtet, die mit Authentifizierung arbeitet.MongoError: listCollections fehlgeschlagen

Ich versuche, eine Datenbank mit mongodb native driver zu kopieren.

MongoError: listCollections failed: { ok: 0.0, errmsg: "not authorized on SESSION to execute command { listCollections: 1, filter: { $or: [ { type: "collection" }, { type: { $exists: false } } ] }, cu...", code: 13, codeName: "Unauthorized" } 

Hier ist, wie ich meine Datenbank ausführen:


Das Problem ist mein Befehl als erhalten abgelehnt

/usr/bin/mongod --quiet 
       --setParameter authenticationMechanisms=SCRAM-SHA-1 
       --auth 
       --port 27017 
       --dbpath /database 

Hier ist der Benutzer I‘ m zum Verbinden verwenden

db.createUser({ 
     "user": "USER", 
     "pwd": "PASS", 
     "roles": [ "root" ] 
    }); 

Ich habe auch versucht mit:

db.createUser({ 
     "user": "USER", 
     "pwd": "PASS", 
     "roles": [ { "role": "root", "db": "admin" } ] 
    }); 

Hier ist, wie ich eine Verbindung (die Verbindung erfolgreich):

const url = "mongodb://USER:[email protected]:27017/SESSION?authSource=admin"; 

MongoClient.connect(url, ... 

Hier ist, wie ich die Kopie anfordern:

const mongoCommand = { 
    copydb: 1, 
    fromhost: "172.42.0.2", 
    fromdb: "SESSION", 
    todb: "SESSION_COPY", 
}; 

// Perform the copy 
this.db.admin().command(mongoCommand, function (err, data) { 

Ich verwende:

Mongodb (database) v3.4.7 
Mongodb (node package) v2.2.31 

Thanks :)


Einige Beiträge, die mich durch diese:

mongodb-not-authorized-for-query-admin-system-users

how-can-i-execute-db-copydatabase-through-nodejss-mongodb-native-driver

+0

Keiner dieser Benutzer hat Zugriff auf die Datenbank "SESSION" erhalten. Es gibt tatsächlich eine Eigenschaft dafür. Tatsächlich hast du es benutzt und es ist 'db'. Sie haben nur die Berechtigung für "admin" erteilt. –

+0

Der erste Benutzer hat '" roles ": [" root "]' was 'root' Rechte für jedes Sammelrecht gewähren soll? –

Antwort

0

Ok, also zuerst, hier ist die .

enter image description here

Wir können dort sehen, dass im Falle von fromhost verwenden Sie username, nouce und key angeben müssen.


Soluce

Wenn Sie eine Datenbank in dem gleichen Host kopieren möchten: nicht vonfromhost anwenden.

Beispiel:

const mongoCommand = { 
    copydb: 1, 
    fromdb: "SESSION", 
    todb: "SESSION_SAVE", 
}; 

Wenn Sie eine Datenbank mit verschiedenen Hosts kopieren möchten: Die Verwendung von username, nonce und keyhere is how you create them.

Verwandte Themen