在增加mongodb的账号密码时候,实现有误,提示无法增加role这个权限,但明明已经是root的最高权限
> use admin
switched to db admin
> db.createUser({
... user: 'manong',
... pwd: '123456',
... roles:[{
... role: 'root',
... db: 'database'
... }],
... mechanisms : ["SCRAM-SHA-1"]
... })
2022-08-06T00:29:57.805+0800 E QUERY [thread1] Error: couldn't add user: Could not find role: root@database :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.createUser@src/mongo/shell/db.js:1437:15
@(shell):1:1
截图如下:

提示使用错误的mongo角色,则需要明白MongoDB的数据库角色来匹配规则(不同内置角色分配不同权限,类似云服务器中的入站规则角色)。MongoDB 在每个数据库上提供 内置的数据库用户和数据库管理角色
总的来说,错误如下:除了admin,其他的roles不能用 root,根据需要选择所想要的role
大致的内置角色如下
数据库用户角色:
数据库管理角色:
集群管理角色:(管理整个系统,而不仅仅是单个数据库。这些角色包括但不限于副本集和分片集群管理功能)
备份和恢复角色,admin数据库包括以下用于备份和恢复数据的角色:
所有数据库角色:(以下角色在admin数据库上可用,并提供适用于除local和 之外的所有数据库的权限config):
超级用户角色:root (admin数据库可用)
内部角色:__system
关于每个角色使用权限
可以查看官网对此解析:MongoDB内置角色
看到上面的内置角色之后
填充其想要的角色即可
将其 role: 'root',置换为 role: 'readWrite',也可
db.createUser({
user: 'manong',
pwd: '123456',
roles:[{
role: 'readWrite',
db: 'database'
}],
mechanisms : ["SCRAM-SHA-1"]
})
截图如下:
