MongoDB: метод db.createRole ()
db.createRole ()
Метод db.createRole () используется для создания роли в базе данных, и привилегии для этой роли могут быть указаны путем явного перечисления привилегий или наличия роли, наследующей привилегии от других ролей или обеих. Роль применяется к базе данных, в которой вы запускаете метод.
Синтаксис:
db.createRole (role, writeConcern)
Параметры:
название | Описание | Необходимые / Необязательный | Тип |
---|---|---|---|
роль | Документ, содержащий название роли и определение роли. | необходимые | документ |
writeConcern | Уровень записи относится к этой операции. Документ writeConcern использует те же поля, что и команда getLastError. | Необязательный | документ |
Ролевый документ имеет следующую форму:
{
role: "<name>",
privileges: [
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
]
}
Документ роли имеет следующие поля:
поле | Описание | Тип |
---|---|---|
роль | Название новой роли. | строка |
привилегии | Привилегии для предоставления роли. Привилегия состоит из ресурса и разрешенных действий. Синтаксис привилегий см. В массиве привилегий. Вы должны включить поле привилегий. Используйте пустой массив, чтобы не указывать никаких привилегий. | массив |
роли | Массив ролей, от которых эта роль наследует привилегии. Вы должны включить поле ролей. Используйте пустой массив, чтобы не указывать роли для наследования. | массив |
В поле ролей вы можете указать как встроенные роли, так и определенные пользователем роли.
Чтобы указать роль, которая существует в той же базе данных, где выполняется db.createRole (), вы можете указать роль с именем роли:
"readWrite"
Или вы можете указать роль с документом, как в:
{ role: "<role>", db: "<database>" }
Чтобы указать роль, которая существует в другой базе данных, укажите роль с документом.
Пример: MongoDB: метод db.createRole ()
Следующий метод db.createRole () создает роль myroll1 в базе данных администратора:
use admin
db.createRole(
{
role: "myroll1",
privileges: [
{ resource: { cluster: true }, actions: [ "addShard" ] },
{ resource: { db: "config", collection: "" }, actions: [ "find", "update", "insert", "remove" ] },
{ resource: { db: "users", collection: "usersCollection" }, actions: [ "update", "insert", "remove" ] },
{ resource: { db: "", collection: "" }, actions: [ "find" ] }
],
roles: [
{ role: "read", db: "admin" }
]
},
{ w: "majority" , wtimeout: 5000 }
);
Выход:
{ "роль": "myroll1", «привилегии»: [ { "ресурс": { "кластер": правда }, "действия": [ "AddShard" ] }, { "ресурс": { "db": "config", "коллекция": "" }, "действия": [ "находить", "Обновить", «Вставить», "Удалить" ] }, { "ресурс": { "db": "пользователи", "collection": "usersCollection" }, "действия": [ "Обновить", «Вставить», "Удалить" ] }, { "ресурс": { "дБ": "", "коллекция": "" }, "действия": [ "находить" ] } ], "роли": [ { "роль": "читать", "db": "admin" } ] }
Получить данные о ресторанах здесь
Поведение
За исключением ролей, созданных в базе данных администратора, роль может включать в себя только те привилегии, которые применяются к ее базе данных и могут наследоваться только от других ролей в ее базе данных.
Роль, созданная в базе данных администратора, может включать привилегии, которые применяются к базе данных администратора, другим базам данных или к ресурсу кластера, и может наследоваться от ролей в других базах данных, а также в базе данных администратора.
Метод db.createRole () возвращает ошибку дублирующейся роли, если роль уже существует в базе данных.
Требуемый доступ
Чтобы создать роль в базе данных, вы должны иметь:
- действие createRole для этого ресурса базы данных.
- действие grantRole в этой базе данных, чтобы указать привилегии для новой роли, а также указать роли для наследования.
Предыдущий: метод db.getUsers ()
Далее: метод db.updateRole ()
Новый контент: Composer: менеджер зависимостей для PHP , R программирования