MongoDB:applyOps:管理员未授权执行命令

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

非常好的一天

我在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:“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