Wow tantas respuestas complicadas / confusas aquí.
Esto es a partir de v3.4 .
Respuesta corta.
1) Inicie MongoDB sin control de acceso.
mongod --dbpath /data/db
2) Conéctese a la instancia.
mongo
3) Crear el usuario.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
4) Detenga la instancia de MongoDB y vuelva a iniciarla con control de acceso.
mongod --auth --dbpath /data/db
5) Conéctese y autentíquese como usuario.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
Respuesta larga: lea esto si desea comprenderlo adecuadamente.
Es muy simple Voy a simplificar lo siguiente: https://docs.mongodb.com/manual/tutorial/enable-authentication/
Si desea obtener más información sobre lo que realmente hacen los roles, lea más aquí: https://docs.mongodb.com/manual/reference/built-in-roles/
1) Inicie MongoDB sin control de acceso.
mongod --dbpath /data/db
2) Conéctese a la instancia.
mongo
3) Crear el administrador del usuario. Lo siguiente crea un administrador de usuarios en la admin
base de datos de autenticación. El usuario está dbOwner
sobre la some_db
base de datos y NO sobre la admin
base de datos, es importante recordar esto.
use admin
db.createUser(
{
user: "myDbOwner",
pwd: "abc123",
roles: [ { role: "dbOwner", db: "some_db" } ]
}
)
O si desea crear un administrador que sea administrador sobre cualquier base de datos:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
4) Detenga la instancia de MongoDB y vuelva a iniciarla con control de acceso.
mongod --auth --dbpath /data/db
5) Conéctese y autentíquese como administrador del usuario hacia la admin
base de datos de autenticación, NO hacia la some_db
base de datos de autenticación. El administrador del usuario se creó en la admin
base de datos de autenticación, el usuario no existe en la some_db
base de datos de autenticación.
use admin
db.auth("myDbOwner", "abc123")
Ahora está autenticado como dbOwner
sobre la some_db
base de datos. Entonces, si desea leer / escribir / hacer cosas directamente hacia la some_db
base de datos, puede cambiar a ella.
use some_db
//...do stuff like db.foo.insert({x:1})
// remember that the user administrator had dbOwner rights so the user may write/read, if you create a user with userAdmin they will not be able to read/write for example.
Más sobre roles: https://docs.mongodb.com/manual/reference/built-in-roles/
Si desea crear usuarios adicionales que no sean administradores de usuarios y que sean usuarios normales, continúe leyendo a continuación.
6) Crear un usuario normal. Este usuario se creará en la some_db
base de datos de autenticación a continuación.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
7) Salga de la consola mongo, vuelva a conectarse, autentíquese como usuario.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})