到目前为止,数据库都处于“裸奔”的状态,任何用户都可以连接到任何数据库并进行CRUD操作。像关系数据库一样,不同的用户应该有不同的权限来操作数据库,MongoDB提供了一套权限控制的API来实现这样的需求。
mongod 实例启动后,默认情况下并没有打开权限认证的功能,即使配置文件里面显示的指定了auth = true,需按以下内容的配置文件启动mongod 实例。
但是 MongoDB 激活权限功能后,所有的客户端连接操作都必须进行权限认证。MongoDB 采用基于角色的权限控制,一个角色是一组权限的集合,一个权限决定了用户对某个数据库可以有哪些操作动作,用户可能有一个或多个角色。如下面命令创建一个用户并赋予 root角色。
创建成功后,admin数据库上将添加一个角色为root的用户,root角色为系统内建的一种角色,这种角色的权限最大,拥有这种角色的用户就是一个超级用户,可以对任何数据库执行任何操作。
数据库admin上保存了针对实例上