La autenticación MongoDB 3.2 falló

Creo un usuario con el siguiente conjunto de comandos. Esto debería crear usuario tanto en el db de admin como en mi destino db ( c2d ):

 # 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" } ] } 

Si bash iniciar sesión, me da la bienvenida con un mensaje de error:

 # 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. : DB.prototype._authOrThrow@src/mongo/shell/db.js:1441:20 @(auth):6:1 @(auth):1:2 exception: login failed 

Luego habilito las funciones de seguridad en el archivo conf y reinicio el servidor:

 security: authorization: enabled 

El error sigue siendo el mismo:

 # 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. : DB.prototype._authOrThrow@src/mongo/shell/db.js:1441:20 @(auth):6:1 @(auth):1:2 exception: login failed 

Bueno, deberás tomar dos pasos en secuencia para crear al usuario exitosamente.

En primer lugar, debe crear un usuario administrador. Prefiero crear superusuario.

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

Reinicie su servidor MongoDB y habilite la autenticación con --auth flag.

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

Una vez que el servidor esté activo, conéctese como administrador

> mongo -u "root" -p "123456" --authenticationDatabase "admin"

Una vez que esté conectado, cree un usuario normal. Suponiendo que su nombre de base de datos de usuario es cd2 .

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

Si ve un mensaje de error, desconéctese de mongo shell y reconecte con nuevas credenciales de usuario.

 > mongo /cd2 -u "cd2" -p "cd2" 

Nuestra experiencia con este problema en MongoDB (3.2.4) es que parece un error o una característica no documentada. Si intenta crear los usuarios y las funciones desde un shell remoto (no localhost), los usuarios se crean, pero tan pronto como sale del shell ya no están (son transitorios para esa sesión) y realmente no persisten.

Solución: intente crear sus usuarios (sin la autenticación habilitada inicialmente en MongoDB) y hágalo directamente en la consola de su servidor de bases de datos (servidor local).