mongodb用户和权限管理

mongodb官方文档已经对用户和权限管理有详细的描述,本文尝试以另一角度来对其做出说明。
由于没在集群上做过测试,集群部分就不写了。

启用用户验证:
mongod添加–auth启动参数
(或) 配置文件中配置 security.authorization: enabled

角色:
一个用户可以有多个角色
read: 读
readWrite: 读写
userAdmin: 用户管理
dbAdmin: 数据库管理
dbOwner: 读写、用户管理、数据库管理

认证源:
每个数据库都可以做为认证源。不同认证源创建的用户可以同名。用户内部的名称为: “$认证源.$用户名”。
认证源内的用户可以拥有针对对其它数据库的角色。
mongo shell中,以当前使用的数据库作为认证源。
通过连接字符串连接时,可能需要通过查询参数指定认证源。

admin数据库:
当前示例的所有用户都保存在admin数据库的system.users集合内。
admin的用户可拥有四个对实例内所有数据库都有效的特殊权限:
readAnyDatabase
readWriteAnyDatabase
userAdminAnyDatabase
userAdminAnyDatabase

超级用户:
一个拥有admin的用户管理角色的用户即为超级用户。超级用户可以为自身或其它用户赋予任何角色。

本地例外:
如果实例开启了用户验证,却还没创建管理角色用户,可以通过本地例外机制创建一个。
通过localhost连接到实例,不过验证,在admin数据库中,创建一个管理角色用户。这个新创建的用户,应当是一个超级用户。
一种更理想的方式:关闭用户认证重启实例,想干吗干吗……

参考:
Enable Client Access Control
Users
Built-In Roles
User Management Methods