Mongodb 获得;“未经授权”;尝试使用db.currentOp时出错
我想创建一个可以在读取数据之前检查当前操作的用户。我发现这样做的方法是使用db.currentOp(),它需要权限来执行“inprog”操作 我创建了Mongodb 获得;“未经授权”;尝试使用db.currentOp时出错,mongodb,Mongodb,我想创建一个可以在读取数据之前检查当前操作的用户。我发现这样做的方法是使用db.currentOp(),它需要权限来执行“inprog”操作 我创建了testRole角色来实现这一点 db.createRole({ role: "testRole", privileges: [{ resource: { db: "grtd", collection: "" }, actions: ["
testRole
角色来实现这一点
db.createRole({
role: "testRole",
privileges: [{
resource: {
db: "grtd",
collection: ""
},
actions: ["inprog"]
}],
roles: []
})
并将其授予用户grtdroot:
db.grantRolesToUser("grtdroot", "roles": [ {"role": "testRole", "db":"grtd"}])
然而,当我对用户grtdroot使用db.currentOp()
时,我总是得到{“err”:“unauthorized”}
。我已确认角色设置正确:
> db.getRoles({showPrivileges: true})
[
{
"role" : "testRole",
"db" : "grtd",
"isBuiltin" : false,
"roles" : [ ],
"inheritedRoles" : [ ],
"privileges" : [
{
"resource" : {
"db" : "grtd",
"collection" : ""
},
"actions" : [
"inprog"
]
}
],
"inheritedPrivileges" : [
{
"resource" : {
"db" : "grtd",
"collection" : ""
},
"actions" : [
"inprog"
]
}
]
}
]
我错过什么了吗?db.currentOp()不能用于用户创建的数据库吗
另外,如果这不是检查并发性的正确方法,那会是什么?inprog的文档说: 将此操作应用于
群集
资源
发件人:
此外,我知道,当我分配内置的
clusterMonitor
角色时,其中包含inprog
操作,我必须在admin
数据库上执行该操作,而不是在将要执行操作的数据库上执行该操作。您在哪里管理用户/角色?在管理数据库中还是在本地(您的情况是grtd)?我在本地管理角色。db始终是“grtd”