varios usa una tipo que para obligatorio modificar insertar identificar documentos documento crear consultas complejas como comandos coleccion caracter campos campo agregar actualizar mongodb permissions rbac replicaset

mongodb - usa - Usuario de la función de actualización: no está autorizado en el administrador para ejecutar el comando



crear una coleccion en mongodb (1)

Cuando intento obtener información sobre la réplica, aparece el siguiente error:

rep0:PRIMARY> rs.printReplicationInfo() 2015-05-19T13:30:29.231+0200 error: { "$err" : "not authorized for query on local.system.namespaces", "code" : 13 } at src/mongo/shell/query.js:131

Intenté ejecutar el comando con los dos siguientes usuarios:

[ { "_id" : "admin.siteRootAdmin", "user" : "siteRootAdmin", "db" : "admin", "roles" : [ { "role" : "root", "db" : "admin" } ] }, { "_id" : "admin.mongoadmin", "user" : "mongoadmin", "db" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" }, { "role" : "dbOwner", "db" : "admin" }, { "role" : "clusterAdmin", "db" : "admin" } ] } ]

Aunque tengo la función clusterAdmin para trabajar con réplicas, he intentado actualizar roles de mongoadmin para leer la base de datos local (ya que todos los roles se otorgan en admin db) pero me da el siguiente error:

rep0:PRIMARY> db.system.users.update({"user":"mongoadmin"},{$addToSet:{"roles":"readAnyDatabase"}}) WriteResult({ "writeError" : { "code" : 13, "errmsg" : "not authorized on admin to execute command { update: /"system.users/", updates: [ { q: { user: /"mongoadmin/" }, u: { $addToSet: { roles: /"readAnyDatabase/" } }, multi: false, upsert: false } ], ordered: true }" } })

  • ¿Qué se supone que necesito tener para tener acceso completo a todos los comandos de réplica, además del rol clusterAdmin ?
  • Si alguno de los dos usuarios tiene permisos en admin db (mongoadmin es dbOwner), ¿por qué no tengo permisos para el comando de actualización?

Estaba actualizando roles con el comando incorrecto; aquí está el correcto:

db.grantRolesToUser( "mongoadmin", [{ role: "read", db: "local"}])

Ahora puedo verificar el replicainfo:

rep0:PRIMARY> rs.printReplicationInfo() configured oplog size: 990MB log length start to end: 617347secs (171.49hrs) oplog first event time: Thu May 14 2015 14:25:04 GMT+0200 (CEST) oplog last event time: Thu May 21 2015 17:54:11 GMT+0200 (CEST) now: Thu May 21 2015 17:54:24 GMT+0200 (CEST)