replica - keyfile mongodb
La autenticación de MongoDB 3.2 falló (2)
Bueno, deberá seguir un par de pasos en secuencia para crear un usuario con éxito.
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 el indicador
--auth
.
> mongod --auth --port 27017 --dbpath /var/lib/mongodb
Una vez que su servidor esté activo, conéctese como administrador
> mongo <host:port> -u "root" -p "123456" --authenticationDatabase "admin"
Una vez que esté conectado, cree un usuario normal.
Asumiendo que el nombre de su base de datos de usuario es
cd2
.
> use cd2
> db.createUser({user: "cd2", pwd: "cd2", roles:["dbOwner"]})
Si ve un mensaje de éxito, desconéctese de Mongo Shell y vuelva a conectarse con las nuevas credenciales de usuario.
> mongo <host:port>/cd2 -u "cd2" -p "cd2"
Creo un usuario con el siguiente conjunto de comandos.
Esto debería crear un usuario tanto en
admin
db como en mi db objetivo (
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 intento iniciar sesión, recibo 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
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 roles desde un shell remoto (no localhost), los usuarios se crean pero tan pronto como abandona el shell desaparecen (son transitorios a esa sesión) y realmente no persisten.
Solución: solo intente crear sus usuarios (sin autenticación habilitada inicialmente en MongoDB) y hágalo directamente en la consola de su servidor de base de datos (localhost).