MongoDB用户管理授权
2023-04-18 16:46:02 时间
1 角色类型
- 数据库用户角色:read、readWrite
- 数据库管理角色:dbAdmin、dbOwner、userAdmin
- 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
- 备份恢复角色:backup、restore
- 所有数据库角色: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、
dbAdminAnyDatabase - 超级用户角色:root
2 注意事项
授权常见的模式分两种
- 指定单个数据库给用户授权,此时需要先切换到指定数据库名称空间下,以
test
为例,use test
,然后进行相关的授权grantRolesToUser
。新创建用户时,以rsq
用户为例,需要在test
数据库中进行用户的创建,注意rsq
跟其它数据库的用户不通用,如果需要在test2
数据库中给rsq
用户授权,则需要在test2中也创建rsq用户。此时mongo连接串需要指定相对应的数据库才可以登录,否则会报认证失败。 - 指定多个数据库给一个用户授权,这种情况需要切换到
admin
数据库中,先对用户进行admin
数据库的权限授权,如dbAdmin
,授权完再给普通数据库授权,这种情况不需要再进入到普通数据库创建用户,用户是全局生效的。此时mongo连接串不需要指定具体的数据库名称也可以登录
3 给单个数据库授权
连接串:mongodb://test:xxxxx@mongo.rsq.cn:27017/?tls=false&authSource=test1
# 新建数据库
use test1
# 新建一个测试collection
# 默认一个db中没有collection,show dbs是看不到这个数据库的
db.site.insert({"name":"test1"})
# 查看数据库
show dbs
# 给新数据库创建用户,密码跟之前保持一致
db.createUser({user: "test",pwd: "xxxxx",roles: [ { role: "dbOwner", db: "test1" } ]})
# 如果需要角色授权,则有如下命令
db.runCommand(
{
grantRolesToUser: "test",
roles:
[
{ role: "dbAdminAnyDatabase", db: "admin" }
]
}
)
4 给一个用户授权多个数据库
连接串:mongodb://test:xxxxx@mongo.rsq.cn:27017/?tls=false
# 需要进入到admin数据库授权多个数据库给同一个用户
use admin
# 创建用户
db.createUser({
user: "test",
pwd: "xxxxx",
roles: [
{
role: "dbAdmin", db: "admin"
},
{
role: "dbOwner", db: "test1"
},
{
role: "dbOwner", db: "test2"
},
{
role: "dbOwner", db: "test3"
}
]
})
5 其它命令
# 查看db相关权限
db.runCommand(
{
rolesInfo: { role: "readWrite", db: "" },
showPrivileges: true
}
)
# 查询用户
db.getUsers();
show users
# 删除用户
db.dropUser('admin')
# 修改用户密码
db.updateUser('admin', {pwd: '111111'})
# 创建管理员用户,需要使用admin数据库
use admin
db.createUser({user: "test",pwd: "xxxxx",roles: [ { role: "dbAdmin", db: "test" } ]})
# 回收用户角色
db.revokeRolesFromUser(
"test",
[
{ role: "root", db: "admin" }
]
)
# 删除数据库
use percepai-cowa3d-corolla-v56tion
db.dropDatabase()
相关文章
- 直接在代码里面对list集合进行分页
- .NET Framework 4.5新特性详解
- 大数据的简要介绍
- 大数据的由来
- 高斯混合模型的自然梯度变量推理
- timing-wheel 仿Kafka实现的时间轮算法
- 使用Navicat软件连接自建数据库(Linux系统)
- 那一天,我被Redis主从架构支配的恐惧
- Redis 深入了解键的过期时间
- C#使用委托调用实现用户端等待闪屏
- 基于流计算 Oceanus 和 Elasticsearch Service 构建百亿级实时监控系统
- GRAND | 转录调控网络预测数据库
- JFreeChart API中文文档
- 临床相关突变查询数据库
- TIGER | 人类胰岛基因变化查询数据库
- 视频边缘计算网关EasyNVR在视频整体监控解决方案中的应用分析
- Apache Arrow - 大数据在数据湖后的下一个风向标
- 常见的电商数据指标体系
- AKShare-艺人数据-艺人流量价值
- MySQL中多表联合查询与子查询的这些区别,你可能不知道!