Mongodb权限
创始人
2024-11-15 00:03:13
0

MongoDB 的权限管理用于确保数据库的安全性并限制用户访问敏感数据。MongoDB 使用基于角色的访问控制(RBAC)来管理权限,允许管理员定义用户和角色,并为这些角色分配相应的权限。

Mongodb的内置角色

数据库角色

角色说明权限
read允许用户读取指定数据库的所有集合。包括 find 操作。find (对于所有集合)
readWrite允许用户在指定数据库上进行读取和写入操作。包括增删查改操作。find, insert, update, delete (对于所有集合)
dbAdmin允许用户管理数据库的结构,例如创建和删除集合、创建索引等。适用于数据库管理任务。createCollection, dropCollection, createIndex, dropIndex, collStats, dbStats, listCollections, listIndexes
userAdmin允许用户创建和删除数据库用户及角色,修改用户的角色和权限。createUser, dropUser, grantRolesToUser, revokeRolesFromUser, changePassword
dbOwner组合了 readWrite, dbAdmin, 和 userAdmin 的权限。允许用户在数据库上执行几乎所有操作,包括用户和角色管理。find, insert, update, remove, createCollection, dropCollection, createIndex, dropIndex, collStats, dbStats, listCollections, listIndexes, createUser, dropUser, grantRolesToUser, revokeRolesFromUser, changePassword

集群角色

角色说明权限
clusterAdmin允许用户执行集群级别的管理操作,例如查看集群状态、管理副本集和分片等。addShard, removeShard, enableSharding, shardCollection, splitChunk, moveChunk, balancerCollection, serverStatus, replSetGetStatus, listShards, listDatabases
clusterManager允许用户执行集群管理任务,但没有 clusterAdmin 角色的全部权限。serverStatus, replSetGetStatus, listShards, listDatabases
clusterMonitor允许用户查看集群的统计信息,例如服务器状态和副本集状态,但不允许修改集群配置。serverStatus, replSetGetStatus, listShards

特权角色

角色说明权限
backup允许用户执行备份操作,通常涉及读取数据库的所有数据。find (对于所有集合)
restore允许用户进行恢复操作,通常涉及写入数据。insert, update, remove (对于所有集合)

应用角色

角色说明权限
readAnyDatabase允许用户读取任意数据库的所有集合。包括 find 操作。find (对于所有集合)
readWriteAnyDatabase允许用户在任意数据库上进行读取和写入操作。包括 find, insert, update, remove 操作。find, insert, update, delete (对于所有集合)
dbAdminAnyDatabase允许用户管理任意数据库的结构。createCollection, dropCollection, createIndex, dropIndex, collStats, dbStats, listCollections, listIndexes
userAdminAnyDatabase允许用户在任意数据库中管理用户和角色。createUser, dropUser, grantRolesToUser, revokeRolesFromUser, changePassword
root最高权限角色,具有对所有数据库和集群操作的完全控制权。包括所有内置角色的权限。所有权限

创建自定义角色

操作权限,需要在 admin 库中进行,使用 use admin,进入admin库

创建自定义角色

db.createRole({   role: "角色名称myRole",   privileges: [     {       resource: { db: "库名称myDatabase", collection: "" },       actions: [ "find" ]     }   ],   roles: [] }) 

参数说明:

  • role: 自定义角色的名称。
  • privileges: 一个数组,定义角色的权限。每个权限定义了可以在某个资源上执行哪些操作。
    • resource: 权限适用的资源,db 是数据库名称,collection 可以指定集合(空字符串表示所有集合)。
    • actions: 角色允许的操作,例如 find, insert, update, remove 等。
  • roles: 角色继承的其他角色,通常为空数组(表示不继承任何其他角色)。

查看自定义的角色

db.getRole("角色名称myRole")

修改自定义角色

db.updateRole("角色名称myRole", {   privileges: [     {       resource: { db: "库名称myDatabase", collection: "" },       actions: [ "find", "listIndexes" ]     }   ] }) 

删除自定义角色

db.dropRole("角色名称myRole")

创建用户

创建用户

在 MongoDB 中,用户是基于数据库创建的。如果你希望用户仅在某个特定数据库上具有权限,需要在该数据库上创建用户。如果需要超管权限就在admin库中创建。

use myDatabase  # 切换到指定的库,创建的用户只在当前库有权限  db.createUser({     user: "用户名",     pwd: "密码",     roles: ["readWrite", "dbAdmin"]        // 角色列表 }) 
use admin   db.createUser({     user: "用户名",     pwd: "密码",     roles: [ 		{ 			"role" : "readWrite", 			"db" : "库名称myDatabase"        // 创建用户时,指定用户的库 		},         { 			"role" : "dbAdmin",                // 指定第二个角色 			"db" : "库名称myDatabase"         		} 	] }) 
#  创建一个拥有所有权限的超管用户 use admin  db.createUser({     user: "admin",     pwd: "123456",     roles: ["root"] }) 

查看用户

# 查看指定的用户 db.getUser("用户名")  # 查看所有用户 show users 

修改用户密码

db.updateUser("用户名", {     pwd: "新密码" }) 

修改用户角色

db.updateUser("用户名", {     roles: ["readWrite", "dbAdmin"] }) 

删除用户

db.dropUser("用户名") 

相关内容

热门资讯

重大通报,牛牛房卡哪里有卖的钻... 钻石大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
两秒就懂!炸金花房卡如何购买,... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享...
房卡必备教程“购买金花房卡联系... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来享...
头条推荐!金花房卡代理零售新八... 新八戒房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根据...
头条推荐!牛牛房卡制作链接九天... 头条推荐!牛牛房卡制作链接九天大厅/房卡最便宜的中心九天大厅是一款非常受欢迎的游戏,咨询房/卡添加微...
科技实测!金花房卡出售新海贝大... 微信游戏中心:新海贝大厅/新神兽房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心...
正规平台有哪些,牛牛房卡怎么获... 蝴蝶大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
微信牛牛房卡链接在哪买的/新圣... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:33903369许多玩家在游戏中会购买房卡来享受...
正规平台有哪些,游戏推荐牛牛房... 正规平台有哪些,游戏推荐牛牛房卡出售大众互娱/微信小游戏充值房卡大众互娱是一款非常受欢迎的游戏,咨询...
正版授权!游戏推荐斗牛房卡出售... 微信游戏中心:精卫大厅房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程...
两秒就懂!在哪里买斗牛微信房卡... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享受...
终于找到“微信金花群房卡是怎么... 新蓝鲸是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享...
科技实测!金花房卡代理零售火神... 火神大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
正版授权!金花房卡批发新鸿狐大... 正版授权!金花房卡批发新鸿狐大厅/随意玩/房卡哪家便宜Sa9Ix苹果iPhone 17手机即将进入量...
头条推荐!金花房卡专卖店毛豆互... 您好!微信毛豆互娱大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(毛豆互娱)大厅介绍:...
推荐一款!游戏推荐斗牛房卡出售... 乐乐堂房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根据...
微信里面玩炸金花房卡在哪买/微... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:55051770许多玩家在游戏中会购买房卡来享...
玩家攻略,金花房卡如何购买熊猫... 玩家攻略,金花房卡如何购买熊猫大厅/微信链接房卡价格一览表熊猫大厅是一款非常受欢迎的游戏,咨询房/卡...
IA解析/金花房卡批发价新全游... 今 日消息,新全游/飞鹰互娱房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更...
ia攻略/金花房卡制作链接逍遥... 逍遥大厅房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...