MongoDB:applyOps:管理员未授权执行命令
非常好的一天 我在mongodb中有一个拥有超级用户权限的用户,如下所示(我使用MongoDB:applyOps:管理员未授权执行命令,mongodb,mongodump,mongorestore,mongodb-oplog,Mongodb,Mongodump,Mongorestore,Mongodb Oplog,非常好的一天 我在mongodb中有一个拥有超级用户权限的用户,如下所示(我使用show users命令确认了角色设置) 当我尝试使用mongorestore恢复oplog时,我得到了错误: 失败:还原错误:应用oplog:applyOps:not authorized on admin来执行命令时出错{applyOps:[{ts:Timestamp(15528288309,1),h:4632811839329880092,v:2,op:“c”,ns:“admin.$cmd”,o:{create
show users
命令确认了角色设置)
当我尝试使用mongorestore恢复oplog时,我得到了错误:
失败:还原错误:应用oplog:applyOps:not authorized on admin来执行命令时出错{applyOps:[{ts:Timestamp(15528288309,1),h:4632811839329880092,v:2,op:“c”,ns:“admin.$cmd”,o:{create:“system.keys”,idIndex:{v:2,key:{id:1},name:“id”,ns:“admin.system.keys”},o2:{},$db:“admin”}
注意:我使用从bsondump获得的最后一个值指定了oploglimit(-oploglimit=1552828432)
这是正确的吗?还是我遗漏了什么
(即)
谢谢你的帮助。提前谢谢
use admin
db.createRole(
{
role: "interalUseOnlyOplogRestore",
privileges: [
{ resource: { anyResource: true }, actions: [ "anyAction" ] }
],
roles: []
}
)
db.createUser({
user: "root",
pwd: "password",
roles: [
{role: "root", db: "admin"},"__system","interalUseOnlyOplogRestore","backup"
]
})
不过,最好将特权降低到下面这样的级别
db.createUser({
user: "root2",
pwd: "password",
roles: [
"interalUseOnlyOplogRestore"
]
})
之后,可以运行restore命令
mongorestore --port 27017 --oplogReplay oplogRestore --authenticationDatabase admin -u root2 -p password
use admin
db.createRole(
{
role: "interalUseOnlyOplogRestore",
privileges: [
{ resource: { anyResource: true }, actions: [ "anyAction" ] }
],
roles: []
}
)
db.createUser({
user: "root",
pwd: "password",
roles: [
{role: "root", db: "admin"},"__system","interalUseOnlyOplogRestore","backup"
]
})
db.createUser({
user: "root2",
pwd: "password",
roles: [
"interalUseOnlyOplogRestore"
]
})
mongorestore --port 27017 --oplogReplay oplogRestore --authenticationDatabase admin -u root2 -p password