错误:无权在数据库上执行命令

Man*_*nny 4 authentication bigdata mongodb mongorestore

我正在尝试使用 mongo 3.0.7 中的 mongorestore 恢复一个大文件。除 system.users 文件夹外,文件夹 prod079 下的所有文件均已成功恢复。用于恢复的命令是

 mongorestore -u testdba -p xxxxxx -d prod079 /data/backup --batchSize=1
Run Code Online (Sandbox Code Playgroud)

上述命令从同一文件夹恢复了 400GB 的数据,但似乎仅对这一文件失败。

我收到这样的错误:

错误:未授权在 prod079 上执行命令 { 插入:“system.users”,文档:[ { _id:ObjectId('531e5251864fb4e84b'),pwd:“xxxxxxxx”,角色:[“dbAdmin”,“readWrite”,“userAdmin " ], 用户: "ab" } ], writeConcern: { getLastError: 1, w: 1 },ordered: false }

2015-12-10T13:20:49.196-0500错误:未授权在prod079上执行命令{插入:“system.users”,文档:[{_id:ObjectId('531e5251864fb4e84c'),用户:“abuser”,pwd: “xxxxxxxx”,角色:[“读”]}],writeConcern:{getLastError:1,w:1},有序:false}

2015-12-10T13:20:49.196-0500错误:未授权在prod079上执行命令{插入:“system.users”,文档:[{_id:ObjectId('5452840f169afa3a2'),用户:“asmeta”,pwd: “xxxxxxxx”,角色:[“读”]}],writeConcern:{getLastError:1,w:1},有序:false}

所以基本上我遇到了很多这样的错误。我尝试在 stackoverflow 和 google 上寻找类似的错误,但我能找到的只是 include -d 或 include localhost。然后我发现一个帖子说我没有给testdba用户授予userAdmin/userAdminAnyDatabase权限。这次我尝试以具有 userAdmin/userAdminAnyDatabase 权限的管理员用户身份运行。我使用的命令是:

mongorestore -u admin -p xxxxx -d prod079 /data/backup --batchSize=1 
Run Code Online (Sandbox Code Playgroud)

这次我遇到了不同类型的错误。它说 :

2015-12-10T13:17:59.940-0500 失败:连接到数据库服务器时出错:服务器在 SASL 身份验证步骤上返回错误:身份验证失败。

现在我真的很困惑到底发生了什么以及为什么我只面临这个文件的问题。另外,当我尝试以管理员身份恢复时,我无法理解为什么我会收到如此不同的错误。

任何建议/帮助将不胜感激。

小智 5

我尝试了上面列出的所有方法,但没有一个有效。

我将“恢复”角色授予了管理员用户,并且它起作用了。

请参阅文档中有关“恢复”的更多信息。