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})。