Буферную "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 ответа:
Похоже, что вы пытаетесь выделить роль
userAdminAnyDatabase
в базе данныхmono
, а не в базе данных {{admin}}. Роли "anyDatabase" доступны только для пользователей, которые проходят проверку подлинности в базе данныхadmin
.Смотритедокументацию ролей anyDatabase для получения дополнительной информации.
Я столкнулся с аналогичными проблемами после создания пользователя admin в mongodb.
Вы можете проверить:
- пользователь admin должен быть в базе данных admin в системе
- Проверьте роли пользователя-администратора роль, которая позволяет вам "видеть "все базы данных, была бы" 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, чтобы увидеть, какие ошибки появляются в задней части.
Удачи,