MongoDB - 角色管理方法

MongoDB - 角色管理方法 首页 / MongoDB入门教程 / MongoDB - 角色管理方法

角色管理命令用于管理用户的角色。以下是用于不同目的的方法。

 db.createRole(role,writeConcern)

createRole方法用于在数据库下分配角色。使用此方法,无涯教程可以通过显式列出特权来为角色指定特权。您也可以通过使角色继承某些不同角色或两者的特权来执行此操作。该角色始终适用于无涯教程在其上运行方法的数据库。

语法:

{
  role: "<role_name>",
  privileges: [
     { resource: { <resource> }, actions: [ "<action>", ... ] },
     ...
  ],
  roles: [
     { role: "<role_name>", db: "<database_name>" } | "<role>",
  ],
  authenticationRestrictions: [
    {
      clientSource: ["<IP>" | "<CIDR range>", ...],
      serverAddress: ["<IP>" | "<CIDR range>", ...]
    }, ]}

示例:

admin数据库上的JTPAdmin角色将使用cerate角色方法创建:

use admin
db.createRole(
   {
     role: "JTPAdmin",
     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 }
)

输出:

Role Management Methods

db.dropRole(rolename,writeConcern)

删除角色方法用于从运行该方法的数据库中删除指定的用户定义角色。

示例 -  以下示例从教程数据库中删除readsubject角色:

use test
db.dropRole( "testrole", { w: "majority" } )

输出:

Role Management Methods

db.dropallolols(writeConcern)

drop all role方法用于从运行该方法的数据库中删除所有指定的用户定义角色。

示例 - 下面的示例使用多数写问题,并从教程数据库中删除所有用户定义的角色。

use Learnfk
db.dropAllRoles( { w: "majority" } )

输出:

Role Management Methods

db.getRole(rolename,option)

MongoDB 中,角色继承了其他角色的实例。此方法用于获取该角色从其继承特权的父角色。同样,可以使用此方法返回所有角色的特权。

当无涯教程从包含用户定义角色和内置角色的数据库运行db.getrole()方法时,指定的命令可以检索信息。

示例:

use Learnfk
db.getRole( "Admin" )

对于角色,教程数据库上定义的Admin返回角色继承信息和特权。

use Learnfk
db.getRole( "Admin", { showPrivileges: true } )

db.getRoles()

返回有关运行命令的数据库中所有角色的信息。无涯教程可以使用带有或不带有参数的此方法。如果无涯教程在不带参数的情况下运行此方法,则该方法将返回数据库的用户定义角色的继承信息。

示例

以下查询将返回教程数据库中所有现有角色的文档,还包括角色特权和内置角色:

db.getRoles(
    {
      rolesInfo: 1,
      showPrivileges:true,
      showBuiltinRoles: true
    }
)

输出:

Role Management Methods

db.updateRole(<rolename>, <update>, <writeConcern>)

更新角色方法用于更新用户定义的角色。要更新用户定义的角色,它必须在指定角色的数据库上运行。当无涯教程更新字段时,它将完全替换旧字段的值。

在这种情况下,无涯教程需要添加或删除角色/特权而不替换每个值,无涯教程必须使用一种或多种列出的方法:

无涯教程网

  • grantRolesToRole()
  • grantPrivilegesToRole()
  • revokeRolesFromRole()
  • revokePrivilegesFromRole()

示例

下面的示例将替换教程数据库中存在的图书管理员角色的特权和角色。该方法在包含图书管理员的数据库上运行:

use tutorial
db.updateRole(
    "librarian",
    {
      privileges:
          [
            {
              resource: { db:"Learnfk", collection:"books" },
              actions: [ "update", "createCollection", "createIndex"]
            }
          ],
      roles:
          [
            {
              role: "read",
              db: "products"
            }
          ]
    },
    { w:"majority" }
)

Shell输出和示例:

Role Management Methods

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

算法面试通关40讲 -〔覃超〕

MySQL实战45讲 -〔林晓斌〕

编辑训练营 -〔总编室〕

从0打造音视频直播系统 -〔李超〕

Electron开发实战 -〔邓耀龙〕

如何看懂一幅画 -〔罗桂霞〕

Python自动化办公实战课 -〔尹会生〕

Go进阶 · 分布式爬虫实战 -〔郑建勋〕

AI 应用实战课 -〔黄佳〕

好记忆不如烂笔头。留下您的足迹吧 :)