更新角色用户:未授权admin执行命令

时间:2015-05-19 11:53:38

标签: mongodb permissions rbac replicaset

当我尝试获取有关副本的信息时,我收到以下错误:

<allow-navigation href="*" />
<allow-intent href="*" />

我试图与以下两个用户一起执行命令:

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

虽然我有 [ { "_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" } ] } ] 角色来处理副本,但我尝试更新mongoadmin的角色来读取本地数据库(因为所有角色都在admin db上授予)但是我收到以下错误:

clusterAdmin
  • 为了获得对所有人的完全访问权限,我需要拥有什么 副本命令除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 }" } }) 角色外?
  • 如果两个用户中的任何一个都拥有admin db(mongoadmin是dbOwner)的权限,为什么我没有更新命令的权限?

1 个答案:

答案 0 :(得分:6)

我用错误的命令更新角色这里是正确的:

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

现在我可以查看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)
相关问题