跳转至

MongoDB Role-based Access Control

官方文档:https://www.mongodb.com/docs/manual/tutorial/change-own-password-and-custom-data/

mongosh 中,可以通过 db.createUser 创建用户。创建用户时,MongoDB 采用基于角色的访问控制

use admin
db.createUser({
  user: "myadmin1",
  pwd: passwordPrompt(),
  roles: [
    { role: "readWrite", db: "config" },
    "clusterAdmin"
  ]
});

其中,权限由数据库资源和在指定资源上的操作组成。其中,资源可以是数据库、集合、部分集合和集群;操作包括对资源的增删改查。常用的内置角色有:

角色 权限
read 读取指定数据库中的任何数据
readWrite read + 写指定数据库中任何数据,包括创建、重命名、删除集合
dbAdmin 数据库之律者 读取指定数据库并对数据库进行清理、修改、压缩、获取统计信息、执行检查等操作
clusterAdmin 集群之律者 可以对整个集群及数据库系统进行操作
userAdmin 人之律者 在指定数据库创建和修改用户
readAnyDatabase 对除 configlocal 之外的数据库拥有 read 权限
readWriteAnyDatabase 对除 configlocal 之外的数据库拥有 readWrite 权限
dbAdminAnyDatabase 对除 configlocal 之外的数据库拥有 dbAdmin 权限
userAdminAnyDatabase 对除 configlocal 之外的数据库拥有 userAdmin 权限

一般来说,内置角色已经足够,用户也可以通过 db.CreateRole() 创建自定义角色