2016-05-22 6 views
13

Ich erstelle einen Benutzer mit den folgenden Befehlen. Dies sollte Benutzer in beiden admin db sowie mein Ziel db (c2d) erstellen:MongoDB 3.2 Authentifizierung fehlgeschlagen

# mongo 127.0.0.1:27017 
MongoDB shell version: 3.2.6-29-g5c19788 
connecting to: 127.0.0.1:27017/test 
> use admin 
switched to db admin 
> show collections 
system.users 
system.version 
> db.system.users.find() 
> db.createUser({user:"cd2", pwd:"cd2", roles:[{role:"dbOwner", db: "c2d"}]}) 
Successfully added user: { 
    "user" : "cd2", 
    "roles" : [ 
     { 
      "role" : "dbOwner", 
      "db" : "c2d" 
     } 
    ] 
} 
> db.system.users.find() 
{ "_id" : "admin.cd2", "user" : "cd2", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "4g6t9kC+godz7k6QQOfD+A==", "storedKey" : "m3tDZBQDU2Tlb1lIjLGyTHmr2QQ=", "serverKey" : "GSA4OXSod1s8mBuZBtfmXq2tlTo=" } }, "roles" : [ { "role" : "dbOwner", "db" : "c2d" } ] } 
> use c2d 
switched to db c2d 
> db.createUser({user:"cd2", pwd:"cd2", roles:[{role:"dbOwner", db: "c2d"}]}) 
Successfully added user: { 
    "user" : "cd2", 
    "roles" : [ 
     { 
      "role" : "dbOwner", 
      "db" : "c2d" 
     } 
    ] 
} 
> use admin 
switched to db admin 
> db.system.users.find() 
{ "_id" : "admin.cd2", "user" : "cd2", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "4g6t9kC+godz7k6QQOfD+A==", "storedKey" : "m3tDZBQDU2Tlb1lIjLGyTHmr2QQ=", "serverKey" : "GSA4OXSod1s8mBuZBtfmXq2tlTo=" } }, "roles" : [ { "role" : "dbOwner", "db" : "c2d" } ] } 
{ "_id" : "c2d.cd2", "user" : "cd2", "db" : "c2d", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "vnMjnjfykVQS8ujQXeWaYw==", "storedKey" : "OYXivkmIwuTavlwTGfjrspT6j2E=", "serverKey" : "lw8xqzAaW8V4IQ9wOmQrG2VSp88=" } }, "roles" : [ { "role" : "dbOwner", "db" : "c2d" } ] } 

Wenn ich versuche, um sich einzuloggen, ich bin mit einer Fehlermeldung empfangen:

# mongo 127.0.0.1:27017/c2d -u c2d -p c2d 
MongoDB shell version: 3.2.6-29-g5c19788 
connecting to: 127.0.0.1:27017/c2d 
2016-05-22T10:35:41.862+0100 E QUERY [thread1] Error: Authentication failed. : 
[email protected]/mongo/shell/db.js:1441:20 
@(auth):6:1 
@(auth):1:2 

exception: login failed 

Dann ermogliche Sicherheitsfunktionen in der conf-Datei und starten Sie den Server:

security: 
    authorization: enabled 

Fehler ist immer noch das gleiche:

# mongo 127.0.0.1:27017/c2d -u c2d -p c2d 
MongoDB shell version: 3.2.6-29-g5c19788 
connecting to: 127.0.0.1:27017/c2d 
2016-05-22T10:37:43.713+0100 E QUERY [thread1] Error: Authentication failed. : 
[email protected]/mongo/shell/db.js:1441:20 
@(auth):6:1 
@(auth):1:2 

exception: login failed 

Antwort

36

Nun, Sie müssen einige Schritte nacheinander ausführen, um Benutzer erfolgreich zu erstellen.

Zunächst müssen Sie einen Administratorbenutzer erstellen. Ich bevorzuge die Erstellung von Super User.

> use admin 
> db.createUser({user: "root", pwd: "123456", roles:["root"]}) 

Starten Sie Ihren MongoDB-Server neu und aktivieren Sie die Authentifizierung mit --auth Flag.

> mongod --auth --port 27017 --dbpath /var/lib/mongodb 

Sobald Ihr Server aktiv ist, schließen Sie

es als Administrator

> mongo <host:port> -u "root" -p "123456" --authenticationDatabase "admin"

Wenn Sie verbunden sind, normale Benutzer erstellen. Angenommen, der Name Ihrer Benutzerdatenbank lautet cd2.

> use cd2 
> db.createUser({user: "cd2", pwd: "cd2", roles:["dbOwner"]}) 

Wenn Sie Erfolg messsage zu sehen, schalten Sie von Mongo Shell und wieder mit neuen Benutzer Anmeldeinformationen.

+2

Es ist so lahm, wenn Sie eine gut aussehende Antwort auf Ihr Problem finden, aber es löst es nicht :-(. Ich mache genau das, ohne Erfolg. –

+0

Nun, es ist bedauerlich, dass diese Lösung nicht Aber es scheint für wenige andere Leute zu funktionieren. – Saleem

+0

Yup ... Ich kann mich über die Shell einloggen, aber nicht über die Kommandozeile.Sehr komisch, aber mach dir keine Sorgen ... Ich habe das nicht heruntergesetzt :-) –

4

Unsere Erfahrung mit diesem Problem auf MongoDB (3.2.4) ist, dass es ein Fehler oder eine undokumentierte Funktion scheint. Wenn Sie versuchen, die Benutzer und Rollen von einer Remote-Shell (nicht localhost) zu erstellen, werden die Benutzer erstellt, aber sobald Sie die Shell verlassen, sind sie weg (sie sind vorübergehend für diese Sitzung) und nicht wirklich persistent.

Lösung: Versuchen Sie einfach Ihre Benutzer zu erstellen (ohne Authentifizierung anfänglich auf MongoDB aktiviert) und tun Sie es direkt auf der Konsole Ihres DB-Servers (localhost).

+0

Hallo, ich habe ein ähnliches Problem konfrontiert. Außer, ich habe ein Shell-Skript, das dies auf der Konsole meines DB-Servers tut, mit dem Flag --noauth. Aber das Gleiche passiert. Die Benutzer werden erstellt, aber sobald ich die Shell verlasse (oder wenn das Skript beendet ist), sind sie weg! Hast du eine Idee, warum das passiert? Ich weiß nicht, wo ich anfangen soll. –

+0

Hallo nochmal, vergiss es! Ich habe es herausgefunden. Meine Shell-Skripte haben alle 'mongod' mit' kill -9' beendet, was laut der MongoDB-Dokumentation niemals gemacht werden sollte. (d. h. Benutze niemals ** kill -9 ** (d. h. ** SIGKILL **), um eine mongod-Instanz zu beenden). Ich vermute also, dass ich es unsicher beendete, obwohl ich mir nicht sicher sein kann, aber ich denke, dass ich das Problem behoben habe. Ich benutze jetzt 'kill -2' –