#mongodb #mongodb-query
Вопрос:
В чем разница между следующими 2 утверждениями
> use admin
switched to db admin
> db.createUser(
... {
... user: "user1",
... pwd: "1234",
... roles: [ { role: "readWrite", db: "test" } ]
... }
... )
Successfully added user: {
"user" : "user1",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
]
}
и
> use test
switched to db test
> db.createUser(
... {
... user: "user2",
... pwd: "1234",
... roles: [ { role: "readWrite", db: "test" } ]
... }
... )
Successfully added user: {
"user" : "user2",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
]
}
- 1-й случай я создаю пользователя внутри БД «администратор» для БД «тест»
с ролью «Чтение» - 2-й случай я создаю пользователя внутри БД «тест» для самой БД «тест» с ролью «Чтение»
Являются ли оба одинаковыми или пользователь, созданный внутри администратора, в этом случае обладает большей властью?
Ответ №1:
Учетная запись пользователя в mongodb идентифицируется как базой данных, так и именем пользователя.
admin.testuser
и test.testuser
есть 2 разные учетные записи, у которых могут быть разные пароли и разные назначенные роли.
При подключении к mongodb база данных аутентификации, указанная в командной строке или в строке подключения, должна соответствовать базе данных, в которой был создан пользователь.
Учетные записи пользователей, созданные в базе данных, отличной admin
от той, которая ограничена ролями и разрешениями в этой базе данных.
Учитывая две упомянутые вами учетные записи, вы сможете назначить readWriteAnyDatabase
роль admin.test
пользователю, но не test.test
пользователю.