MongoDB 角色管理命令
角色管理命令用于定义指定用户的角色。
一、MongoDB createRole 命令
createRole 命令分配一个角色并指定其优势。分配的角色适用于我们运行命令的数据库。如果角色已存在于数据库中,该命令将返回重复角色错误。
语法:
{ createRole: "<new role>",
privileges: [
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
authenticationRestrictions: [
{
clientSource: ["<IP>" | "<CIDR range>", ...],
serverAddress: ["<IP>" | "<CIDR range>", ...]
},
...
],
writeConcern: <write concern document>
}
命令字段:
字段名 | 类型 | 描述 |
---|---|---|
createRole | string | createRole 字段包含新角色的名称。 |
privileges | array | 它包含授予角色的权限。如果您不想指定任何角色,请将其留空。 |
roles | array | 它包含用于将角色分配给用户的角色数组。 |
authentication Restrictions |
array | 身份验证限制字段限制服务器强制执行角色。 |
writeConcern | document | 应用于此操作的写入关注级别。 |
示例:
createRole 命令在 admin 数据库上创建 YiidianAdmin 角色
db.adminCommand({ createRole: "YiidianAdmin",
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" }
],
writeConcern: { w: "majority" , wtimeout: 5000 }
)
二、MongoDB dropRole 命令
MongoDB dropRole 命令删除用户在我们运行该命令的数据库中定义的角色。
语法:
{
dropRole: "<role>",
writeConcern: { <write concern> }
}
Example:
This example remove the readPrice role from the products database.
use products
db.runCommand(
{
dropRole: "readPrices",
writeConcern: { w: "majority" }
}
)
三、MongoDB updateRole 命令
update 命令更新用户定义的角色。该命令必须在角色的数据库上运行。该命令可以完全替换之前的字段值。
语法:
{
updateRole: "<role>",
privileges:
[
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
roles:
[
{ role: "<role>", db: "<database>" } | "<role>",
...
],
authenticationRestrictions:
[
{
clientSource: ["<IP>" | "<CIDR range>", ...],
serverAddress: ["<IP>", ...]
},
...
]
writeConcern: <write concern document>
}
示例:
db.adminCommand(
{
updateRole: "myClusterwideAdmin",
privileges:
[
{
resource: { db: "", collection: "" },
actions: [ "find" , "update", "insert", "remove" ]
}
],
roles:
[
{ role: "dbAdminAnyDatabase", db: "admin" }
],
writeConcern: { w: "majority" }
}
)
上面的示例更新了 admin 数据库上的 myClusterwideAdmin 角色。
四、MongoDB grantPrivilagesToRole 命令
这是一个非常重要的命令,用于向用于运行该命令的数据库上的用户定义角色添加一些额外的权限。
语法:
{
grantPrivilegesToRole: "<role>",
privileges: [
{
resource: { <resource> }, actions: [ "<action>", ... ]
},
...
],
writeConcern: { <write concern> }
}
示例:
use products
db.runCommand(
{
grantPrivilegesToRole: "service",
privileges: [
{
resource: { db: "products", collection: "" }, actions: [ "find" ]
},
{
resource: { db: "products", collection: "system.js" }, actions: [ "find" ]
}
],
writeConcern: { w: "majority" , wtimeout: 5000 }
}
)
上面的示例授予产品数据库中存在的服务角色两个额外的特权。
热门文章
优秀文章