Создание пользователя в базе данных администратора по сравнению с другими базами данных в MongoDB

#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 пользователю.