2

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

更新:再看一遍,一切都导入错误。正在使用包含已导入文档的所有数据的数据属性导入文档。这显然行不通。如何让这些数据正确导入?

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

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

不确定“type、key、rev、data”包装文档的用途,但似乎在搞砸恢复过程。在最坏的情况下,我将编写一个脚本,在没有包装器的情况下导入这些文档。但如果有更好的方法来做到这一点,那就太好了。

4

1 回答 1

1

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

As far as I can see, the dump and restore operations are correct. Dumping data intentionally wraps all documents' data into a data attribute. This is because dumping may not only dump documents from the collections but may also dump removal operations (which then will be re-applied by a restore operation). The type attribute indicates what type of data you're looking at, with 2300 being a regular document (and 2301 being an edge and 2302 being a removal operation).

The data produced by arangodump can be reimported using arangorestore and does not need to be converted. Writing your own scripts for that is not necessary from my point of view.

关于恢复后的密码,我想到的一件事是 ArangoDB 将一些密码数据保存在缓存中,并且该缓存可能不会通过恢复操作自动更新。

要检查是否是这种情况并导致您面临的问题,您可以尝试在还原后停止并重新启动服务器吗?如果在此之后身份验证正常但之前不行,则密码缓存可能存在问题。

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

于 2014-10-06T10:50:19.713 回答