
地 址:上海市崇明66号
电 话:18960395558
网址:www.lbwcode.com
邮 箱:94538912@qq.com
MongoDB是限设一个高性能、开源、限设无模式(shi)的限设文档型数据库,广泛应用于各种(zhong)规模的限设应用(yong)场景,在实际应用中,限(xian)设为(wei)了保证数据(ju)的限设安全和合规性(xing),我们需要(yao)对MongoDB进(jin)行访问控制权限的限设设置,访问控制权限主要包括用户管理、限设角色管(guan)理、权限管理等,本文将详细介绍如何设置MongoDB的访问控制权限。
1、登录MongoDB Shell


我们需要使用管理(li)员账户登录MongoDB Shell,在命令行(xing)中输入以下命令:

mongo
2、创建用户
在MongoDB Shell中,我(wo)们可(ke)以使用db.createUser()方法创建一个新用户,我们可以创建一个名(ming)为myUser,密码为myPassword的用户:
use admindb.createUser({ user: "myUser", pwd: "myPassword", roles: [{ role: "readWrite", db: "myDatabase" }]})roles字段表示用户的角色,在这个例子中,我(wo)们为(wei)用(yong)户分配了readWrite角色,表示(shi)该用户可以在myDatabase数据库中进(jin)行读写操作,其(qi)他可选的角色有:read(只读)、readAnyDatabase(任意数据库读)、dbAdminAnyDatabase(任意数据(ju)库管理员)等。
1、创建角色集(ji)合
在MongoDB中,角色是通过角色集合来管理的,我们可以使用以下命令创建一个名为myRoles的角色集合:
use admindb.createCollection("myRoles")2、添加角色
接下来,我们可以使用db.users.insert()方法向myRoles集合中插入一个新角色,我们可以创建一个名为myRole,允许用户进行读写操作的角色:
db.myRoles.insert({ user: "myUser", roles: ["readWrite"]})1、创建数据库级权限集合(RBAC)系(xi)统
要启用基于角色的访问控制(RBAC),我们需要首先在MongoDB中创建一个名为system.roles的集合(he),并为(wei)每个角色分配相应的权限,我们可以为myUser分配以下(xia)权限:
use admindb.system.roles.insert({ role: "readWrite", db: "admin"}) // 为admin数据库分配读写权限db.system.roles.insert({ role: "readAnyDatabase", db: "admin"}) // 为admin数据库分配任意(yi)数据库读权限2、将角色添加到数据库中
接下来,我们需要将之前(qian)创建的角色添加到相应的(de)数据库中,我们可(ke)以将(jiang)myRole添加到myDatabase数据库中:
use myDatabasedb.getSiblingDB("admin").system.roles.findOneAndUpdate({ name: "myRole"}, { $addToSet: { "members": "myUser"}}) // 将myUser添加到myRole的成员列表中1、如(ru)何删除一个用户?
答:db.dropUser("username"),其中(zhong)username是要(yao)删除的用户名,要删除名为myUser的用户,可以执行以下命令:
use admindb.dropUser("myUser")