MongoDB学习总结(五) —— 安全认证

 作为数据库软件,我们要确保数据的安全,不是谁都可以访问的,所以mongodb也像其他的数据库软件一样可以采用用户验证的方法,

 mongodb 3.0之前的版本提供了addUser方法向不同的数据库添加可信任的用户mongodb 3.0开始之后的版本则改成了createUser方法,

 我这里用的最新的版本,所以需要使用createUser方法。

 

下面我们重新建立一个mongodb数据库。同样以windows服务的形式开启。

 

 

> 创建用户

 服务创建成功并且启动成功,我们开启客户端。使用createUser创建用户。

 因为createUser方法与之前addUser方法差别很大,创建用户需要添加不同的角色权限。

 这里注意点就是在admin数据库中添加用户是超级用户,也叫数据库管理员,它可以操作任何数据库。

 

 具体权限有以下:

 read:允许用户读取指定数据库

 readWrite:允许用户读写指定数据库

 dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

 userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户

 clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。

 readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限

 readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限

 userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

 dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。

 root:只在admin数据库中可用。超级账号,超级权限。

 

下面我们通过简单的实例介绍一下。

 

上面我们创建了admin超级用户"super"以及product集合的用户"derek",并且具备读写及管理的权限。

 

> 开启服务验证

下面我们开启服务的用户验证模式,使用--auth参数。

 

 

 我们开启了服务验证模式,下面我们看下实例。

 

 我们看到没有验证之前,我们无法对product集合进行相应的操作,所以我们通过db.auth方法来进行验证,结果返回1表示验证通过,然后就可以对集合进行操作了。

 当我们切换到admin的超级用户时,我们可以对任意集合进行操作。

 

 以上是简单的建立了两个用户,上面介绍MongoDB 3.0开始之后建立用户包含的很多中角色role,根据概念很好理解,大家根据需求可以自己尝试下,我在这里就不一一列举了。

 

 另外查询有哪些用户,用db.system.users.find()命令。如果需要删除用户则使用db.system.users.remove({name,value})

 

 

 

原文地址:https://www.cnblogs.com/mejoy/p/6008447.html