前言
开发过管理后台的同学们多多少少都接触过权限管理,所谓的权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源。常用的还是基于角色的权限模型(RBAC),mongodb用户角色管理也是基于RBAC模型。知道了这些我们可以带着问题去做实验,学习mongodb的权限管理。关于mongodb权限管理的更多参考可以查看官方的文档手册,mongodb用户管理方法。
一、创建超级管理员
mongodb安装成功之后是没有超级管理员的,需要我们自行创建。默认情况下,mongodb默认有三个集合,分别为admin
,config
,local
,我将会在admin
这个集合上创建超级管理员,也就是添加用户与分配角色。
- 首先我们进入mongo
[root@iZupocrsg5bjaoZ ~]# mongo
MongoDB shell version v5.0.5
- 我们将使用admin这个集合
> use admin
switched to db admin
- 创建超级管理员(密码应该设置为强密码,以下只是方便演示)
> db.createUser({user:"root",pwd:"123456",roles:[{role:"root",db:"admin"}]})
- 身份验证,也就是数据库登录,输出1代表登录成功
> db.auth("root","123456")
1
- 查看数据库
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
- 查看当前所在数据库
> db
admin
- 获取当前数据库的所有用户
> db.getUsers()
[
{
"_id" : "admin.root",
"userId" : UUID("23a08851-4008-49d7-b0d5-5d8b08c392b3"),
"user" : "root",
"db" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
]
- 查看当前数据库状态
> db.stats()
- 获取当前数据库版本
> db.version()
- 查看当前mongodb服务地址
> db.getMongo()
connection to 127.0.0.1:27017
二、创建数据库与分配用户角色
mongodb角色分类,如果不知道角色职责,可以自行百度
- 数据库用户角色:read、readWrite;
- 数据库管理角色:dbAdmin、dbOwner、userAdmin;
- 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
- 备份恢复角色:backup、restore;
- 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户角色:root
- 系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
- 要创建数据库与分配用户角色,我们首先得登进去
admin
集合
> use admin
switched to db admin
> db.auth("root","123456")
1
- 创建数据库,比如创建test数据库,直接use test
> use test
- 给test数据库分配用户角色
> db.createUser({user:"yezhiyaun",pwd:"123456",roles:[{role:"dbOwner",db:"test"}]})
三、结语
更多mongodb权限管理的实例同学们可以亲自探索,山外有山,人外有人,多思考,对实践,多反思,祝大家生活愉快。