一:问题描述
今天在做全库恢复的时候报错:
[root@ser6-52 myTest]# mongorestore -u superuser -p 123 --authenticationDatabase admin /backup/mongodb/full_bak_201507021651.bak/
connected to: 127.0.0.1
2015-07-02T17:45:45.297+0800 going into namespace [admin.system.version]
Restoring to admin.system.version without dropping. Restored data will be inserted without raising errors; check your server log
1 objects found
2015-07-02T17:45:45.298+0800 Creating index: { key: { _id: 1 }, name: "_id_", ns: "admin.system.version" }
Error creating index admin.system.version: 13 err: "not authorized to create index on admin.system.version"
Aborted (core dumped)
二:出错原因
该用户缺少restore权限
--我之前以为root就是最大的权限了,就没想过会是因为缺少restore权限造成的。哎,真是!
三:解决办法
赋权:
> db.grantRolesToUser( "superuser" , [ { role: "restore", db: "admin" } ]);
--再次尝试恢复:
[root@ser6-52 ~]# mongorestore -u superuser -p 123456 --authenticationDatabase admin /backup/mongodb/full_bak_201507021651.bak/
connected to: 127.0.0.1
2015-07-03T09:30:20.275+0800 going into namespace [admin.system.version]
Restoring to admin.system.version without dropping. Restored data will be inserted without raising errors; check your server log
1 objects found
2015-07-03T09:30:20.276+0800 Creating index: { key: { _id: 1 }, name: "_id_", ns: "admin.system.version" }
2015-07-03T09:30:20.277+0800 /backup/mongodb/full_bak_201507021651.bak/admin/system.users.bson
2015-07-03T09:30:20.277+0800 going into namespace [admin.system.users]
Restoring to admin.system.users without dropping. Restored data will be inserted without raising errors; check your server log
2 objects found
2015-07-03T09:30:20.282+0800 Creating index: { key: { _id: 1 }, name: "_id_", ns: "admin.system.users" }
2015-07-03T09:30:20.282+0800 Creating index: { unique: true, key: { user: 1, db: 1 }, name: "user_1_db_1", ns: "admin.system.users" }
2015-07-03T09:30:20.285+0800 /backup/mongodb/full_bak_201507021651.bak/myTest/d.bson
2015-07-03T09:30:20.285+0800 going into namespace [myTest.d]
11 objects found
2015-07-03T09:30:20.286+0800 Creating index: { key: { _id: 1 }, name: "_id_", ns: "myTest.d" }
2015-07-03T09:30:20.288+0800 /backup/mongodb/full_bak_201507021651.bak/myTest/c.bson
2015-07-03T09:30:20.288+0800 going into namespace [myTest.c]
Restoring to myTest.c without dropping. Restored data will be inserted without raising errors; check your server log
2000 objects found
2015-07-03T09:30:20.295+0800 Creating index: { key: { _id: 1 }, name: "_id_", ns: "myTest.c" }
--角色权限请参考:MongoDB用户权限操作