从备份恢复ArangoDB,包括用户密码

时间:2014-10-03 18:44:48

标签: collections passwords restore arangodb

我有一个ArangoDB 1.4的实例,我需要从备份中恢复。我用arangodump来备份数据库,然后用arangorestore进行恢复。除了_users集合中的用户密码之外,所有数据似乎都可以正常恢复。它在名为password的用户文档上创建一个包含加密字符串的属性。有没有办法让它恢复用户密码?

更新:第二次看一切输入错误。文档正在导入,其数据属性包含导入文档的所有数据。这显然是行不通的。如何正确导入此数据?

更新2:看起来导入过程可能工作正常,但转储很奇怪。它使用这样的包装文档转储每个文档:

{"type":2300,"key":"540727924","rev":"540727924","data":
    {"_key":"540727924","_rev":"540727924","type":"group"}
}

不确定"类型,键,转速,数据"包装器文件适用于,但似乎是在恢复过程中搞砸了。最糟糕的情况我将编写一个脚本,在没有包装器的情况下导入这些文档。但如果有更好的方法可以做到这一点会很棒。

1 个答案:

答案 0 :(得分:1)

密码作为salted哈希值存储在ArangoDB中。原始密码未存储,无法从哈希值中恢复。 这是出于安全原因而完成的,并且在其他地方也是常见的做法。 由于ArangoDB不使用纯文本密码,因此我不认为这会在重新导入数据时造成任何问题。

据我所知,转储和恢复操作是正确的。倾倒数据故意包装所有文件'将数据转换为data属性。这是因为转储不仅可以从集合中转储文档,还可以转储删除操作(然后将通过还原操作重新应用)。 type属性指示您正在查看的数据类型,2300是常规文档(2301是边缘,2302是删除操作)。

arangodump生成的数据可以使用arangorestore重新导入,不需要转换。从我的角度来看,没有必要为此编写自己的脚本。

在恢复之后,我想到的有关密码的一件事是ArangoDB在缓存中保留了一些密码数据,并且这个缓存可能无法通过恢复操作自动更新。

要检查是否是这种情况并导致您遇到的问题,您可以尝试在恢复后停止并重新启动服务器吗?如果身份验证在此之后但之前没有正常工作,则可能是密码缓存存在问题。

除此之外,在arangorestore操作中使用arangodump生成的数据时,您实际遇到了什么样的问题?从帖子中可以清楚地看出出了什么问题。