Буферную "userAdminAnyDatabase" пользователь не админ пользователей в "базе данных". Почему?


Это вопрос userAdmin против userAdminAnyDatabase.

В system.users у меня есть следующие пользователи (пароль 1234 для обоих):

> db.system.users.find()
{ "_id" : ObjectId("52a976cb7851682aa44d6d4d"), "user" : "admin_one", "pwd" : "884f516cf308a4c6a75bbc5a0a00807b", "roles" : [  "userAdmin",  "dbAdmin" ] }
{ "_id" : ObjectId("52a97c697851682aa44d6d4f"), "user" : "admin_two", "pwd" : "26e7bb644e5919461cd6ba7403dc6906", "roles" : [  "userAdminAnyDatabase",  "dbAdminAnyDatabase" ] }

Соединение с неверным пользователем:

$ mongo mono -u admin -p 1234
connecting to: mono
Thu Dec 12 10:09:00.733 Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" } at src/mongo/shell/db.js:228

Что нормально.

Подключение к администратору БД:

$ mongo mono -u admin_one -p 1234
connecting to: mono
> db.system.users.find()
{ "_id" : ObjectId("52a976cb7851682aa44d6d4d"), "user" : "admin_one", "pwd" : "884f516cf308a4c6a75bbc5a0a00807b", "roles" : [  "userAdmin",  "dbAdmin" ] }
{ "_id" : ObjectId("52a97c697851682aa44d6d4f"), "user" : "admin_two", "pwd" : "26e7bb644e5919461cd6ba7403dc6906", "roles" : [  "userAdminAnyDatabase",  "dbAdminAnyDatabase" ] }

Что тоже нормально.

Теперь, соединяясь с администратором" AnyDatabase", я получаю ошибку:

$ mongo mono -u admin_two -p 1234
connecting to: mono
> db.system.users.find()
error: { "$err" : "not authorized for query on mono.system.users", "code" : 16550 }

Почему?

2 3

2 ответа:

Похоже, что вы пытаетесь выделить роль userAdminAnyDatabase в базе данных mono, а не в базе данных {{admin}}. Роли "anyDatabase" доступны только для пользователей, которые проходят проверку подлинности в базе данных admin.

Смотритедокументацию ролей anyDatabase для получения дополнительной информации.

Я столкнулся с аналогичными проблемами после создания пользователя admin в mongodb.

Вы можете проверить:

  1. пользователь admin должен быть в базе данных admin в системе
  2. Проверьте роли пользователя-администратора роль, которая позволяет вам "видеть "все базы данных, была бы" clusterAdmin " я бы проверил роли и добавил те, которые вам нужны для роли amdin.

Это может помочь

Пользователи объяснил: http://docs.mongodb.org/manual/reference/method/db.grantRolesToUser/#db.grantRolesToUser

UserAdminAnyDatabase и userAdmin явно не разрешают пользователю какие-либо привилегии, выходящие за рамки администрирования пользователя. Вам также придется добавить роль "clusterAdmin" для команды list databases: http://docs.mongodb.org/manual/reference/user-privileges/#clusterAdmin Если вы хотите, чтобы ваш пользователь читал / записывал из базы данных и коллекций, вам нужно будет добавить другую роль, "readWrite"

Кроме того, вы можете проверить свой терминал mongod, чтобы увидеть, какие ошибки появляются в задней части.

Удачи,