Пользователь роли обновления: администратор не авторизован для выполнения команды

Когда я пытаюсь получить информацию о реплике, я получаю следующую ошибку:

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

Хотя у меня есть роль clusterAdmin для работы с репликами, я попытался обновить роли mongoadmin для чтения локальной базы данных (поскольку все роли предоставлены в базе данных администратора), но я получаю следующую ошибку:

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 }"
        }
})
  • Что я должен иметь, чтобы получить полный доступ ко всем командам реплики в дополнение к роли clusterAdmin?
  • Если у любого из обоих пользователей есть разрешения в admin db (mongoadmin — это dbOwner), почему у меня нет разрешений для команды обновления?

person RuBiCK    schedule 19.05.2015    source источник


Ответы (1)


Я обновлял роли неправильной командой, вот правильная:

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

Теперь я могу проверить информацию о реплике:

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)
person RuBiCK    schedule 21.05.2015