用户在控制台上创建文档数据库服务实例成功之后,默认会分配 root 用户进行数据库操作。root 用户具备超级权限,可以对整个实例的库表进行读写,以及创建删除等管理操作。
如果文档数据库服务实例被多个业务使用,建议按照数据库和读写操作类型再创建独立的用户。通过对不同类型的业务分配最小最合适的操作权限,避免出现用户权限过大带来的安全风险。
文档数据库服务实例支持的所有操作都是基于 role 进行权限校验的,role 定义了操作行为,比如是否读写,是否能进行管理或者监控类的操作等。一个 用户可以包含1 个或者多个 role。
可以执行下面的命令,创建一个只对 db1 数据库有读权限的用户 user1:
db.createUser({user:"user1", pwd: <替换为实际的密码>, roles:[{role:"read", db:"db1"}]})
创建成功后通过 user1 登录,则只能看到 db1 数据库下面的表,并只能执行读数据操作。
如果希望创建一个能读 db1, 能读写 db2 的用户 user2, 可以在使用 root 登录后执行下面的命令:
db.createUser({user:"user2", pwd:<替换为实际的密码>, roles:[{role:"read", db:"db1"}, {role:"readWrite", db:"db2"}]})
创建成功后通过 user2 登录,则可以看到 db1 和 db2 数据库下面的表,对 db1 的表只能执行读操作,对 db2 可以执行建表和删表操作以及表的读写操作。