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

祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)

精选教程推荐

👇 以下精选教程可能对您有帮助,拓展您的技术视野

超级访谈:对话毕玄 -〔毕玄〕

深入浅出可观测性 -〔翁一磊〕

业务开发算法50讲 -〔黄清昊〕

操作系统实战45讲 -〔彭东〕

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

移动端自动化测试实战 -〔思寒〕

SQL必知必会 -〔陈旸〕

从0开始做增长 -〔刘津〕

软件测试52讲 -〔茹炳晟〕

📝 好记忆不如烂笔头,留下您的学习笔记吧!

暂无学习笔记,成为第一个分享的人吧!

您的笔记将帮助成千上万的学习者