用mongorestore 做数据恢复的时候出现了如下错误:
replaying oplog
Failed: restore error: error applying oplog: applyOps: not authorized on admin to execute command { applyOps:
恢复命令如下:
mongorestore --host=127.0.0.1 --port=27017 --username=admin --password=123456 --oplogReplay 20170213_bak/
官方文档解释如下:
https://docs.mongodb.com/manual/reference/command/applyOps/
If authorization is enabled, you must have access to all actions on all resources in order to run applyOps. Providing such access is not recommended, but if your organization requires a user to run applyOps, create a role that grants anyAction on anyResource. Do not assign this role to any other user.
解决方法:
db.createRole({role:'sysadmin',roles:[], privileges:[ {resource:{anyResource:true},actions:['anyAction']}]})
db.grantRolesToUser( "admin" , [ { role: "sysadmin", db: "admin" } ])