如何从 MongoDB 中的用户删除 dropCollection 访问权限?

Posted

技术标签:

【中文标题】如何从 MongoDB 中的用户删除 dropCollection 访问权限?【英文标题】:How to remove dropCollection access right from users in MongoDB? 【发布时间】:2015-05-25 11:04:37 【问题描述】:

创建了一个具有readWrite 访问集合的 MongoDB 用户。但我不想将dropCollection 访问权限授予该用户。我该如何实现。

谢谢。

【问题讨论】:

【参考方案1】:

你可以define your custom role为你的目的。

您还可以通过继承自定义角色的 admin.system.roles.roles 字段来扩展现有角色。

这是一个自定义角色示例


  role: "YourRole",
  db: "YourDatabase",
  privileges:
      [
          
              resource: db: "YourDatabase", collection: "OneOfCollections",
              actions: ["find", "insert", "update", "remove", "createIndex" ...]
          ,
          
              resource: db: "YourDatabase", collection: "AnotherCollection",
              actions: ["find", "insert", "update", "remove", "createIndex" ...]
          ,
          .
          .
          .
      ],
  roles:
      [
           role: "RoleYouWantToInherit", db: "TheDatabaseRoleIsDefinedFor" ,
          ...
      ]

【讨论】:

【参考方案2】:

@n9code。

在管理员集合上运行以下查询会出错。

db.runCommand(
    createRole:"mynew",
    priviliges : [..],
    roles: [
     role: "read", db: "admin" 
  ],
  writeConcern:  w: "majority" , wtimeout: 5000 
)

显示“错误消息:没有这样的 cmd creareRole”

【讨论】:

嗨 Bhargav - 我想你一定是在命令中打错了,creareRole 应该是 createRole。无论如何,这并不是问题的真正答案。它更像是对 n9code 答案的评论,所以如果有的话,它应该去那里。

以上是关于如何从 MongoDB 中的用户删除 dropCollection 访问权限?的主要内容,如果未能解决你的问题,请参考以下文章

从 Mongoose/MongoDB 中的数组中删除对象

如何从 MongoDB 文档中的双重嵌套数组中删除元素。

如何从js中的数组中删除元素[元素来自mongodb] [重复]

如何从js中的数组中删除元素[元素来自mongodb] [重复]

如何建立注销用户的路由并从mongodb数据库中删除

使用 MongoDB 从数组中删除特定项目