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

时间:2015-05-25 11:04:37

标签: mongodb user-accounts drop-table

创建了一个具有readWrite访问权限的MongoDB用户。但我不想给dropCollection访问该用户的权限。我该如何实现呢。

感谢。

2 个答案:

答案 0 :(得分:2)

您可以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" },
          ...
      ]
}

答案 1 :(得分:0)

@n9code

在admin collection上运行以下查询会出错。

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

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