我正在使用Mongo DB版本3.4,我在DB中有一个用户
C:\Program Files\MongoDB\Server\3.4\bin>mongo
MongoDB shell version v3.4.5
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.5
> use admin
switched to db admin
> db.auth("myUserAdmin","abc123");
1
我使用了以下带身份验证的查询来恢复转储文件
mongorestore --host 50.50.1.57:27017 --username myUserAdmin --password abc123 --authenticationDatabase admin --db targetdb E:\test\DB\test_02_19_2018_06_00_01\test
但是我可以提出你的问题,请
2018-02-19T14:45:29.743+0530 the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead
2018-02-19T14:45:29.745+0530 building a list of collections to restore from E:\test\DB\test_02_19_2018_06_00_01\test dir
2018-02-19T14:45:29.790+0530 Failed: targetdb.access_token: error reading database: not authorized on targetdb to execute command { listCollections: 1, cursor: { batchSize: 0 } }
答案 0 :(得分:3)
MyUserAdmin
没有足够的权限可以恢复为targetdb
。
您可以使用Mongodb的内置角色:
还原,它将为您提供从不包含system.profile集合数据的备份还原数据所需的权限。它还将为您提供以下任何资源的操作:
listCollections
这将解决您所看到的错误:
not authorized on targetdb to execute command { listCollections: 1, cursor: { batchSize: 0 } }
备份将提供备份数据所需的最小权限。
使用正确的角色/权限运行更新当前用户:
db.updateUser( "MyUserAdmin",
{ roles : [
{ role : "restore", db : "admin" },
{ role : "backup", db : "admin" }
] } )
答案 1 :(得分:0)
创建具有读写访问权限的用户并尝试
db.createUser( { "user" : "user123", "pwd": "pass",
"roles" : [{ role: "dbOwner", db: "livmor_mongo" },
{
"role" : "readWrite",
"db" : "livmor_mongo"
} ] } )
您也可以使用userAdminAnyDatabase角色而不是readWrite