gpt4 book ai didi

MySQL 密码 () 列 : migration to MongoDB

转载 作者:行者123 更新时间:2023-11-29 05:38:22 25 4
gpt4 key购买 nike

我希望将用户数据表迁移到我崭新的 MongoDB 设备。无法思考如何处理一列密码。我正在使用 MySQL 的 PASSWORD() 函数来存储密码。当构建这个东西时,我没有看到任何需要反转加密的理由,所以我没有看到使用 PASSWORD() 函数有任何危害。但现在我无法按原样传输密码,因为(据我所知)我无法在 MongoDB 中以相同的方式使用 PASSWORD() 来检查密码的有效性。

有什么想法吗?

最佳答案

您有多种选择:

选项 1:延迟迁移。

保持您的 MySQL 和 MongoDB 服务器在线和连接。当用户尝试登录时,检查 MongoDB 的密码。如果失败(即从未设置密码),则对照 MySQL 检查它。如果成功,则对密码进行哈希处理并将其存储在 MongoDB 文档中。

缺点:您的 MySQL 服务器必须永远保持在线(或至少在所有用户迁移之前)。

优点:您可以轻松地将 MySQL 密码格式替换为您自己的格式(即 bcrypt 哈希或诸如此类)。您不必了解 MySQL 如何在内部散列密码。

选项 2:找出 MySQL password() 函数的工作原理,并将其复制到客户端。

根据 Simulating MySql's password() encryption using .NET or MS SQL PASSWORD() 的算法 MySQL 版本 4.1 和更多用途是 "*"+ sha1(sha1("password")),或多或少。如果您运行的是旧版本,则需要找出散列算法是什么,然后改用它。您只需使用您的密码,对它进行双重 SHA1 哈希处理,在前面加上一个星号,然后检查该值是否与数据库中的内容匹配。

缺点:确切的算法取决于您运行的 MySQL 版本,因此您可能需要根据您的 MySQL 版本进行一些挖掘。您仍然在 MongoDB 文档中使用 MySQL 密码格式(尽管您可以使用类似于选项 1 中描述的过程进行惰性升级)。

优点:您可以执行一次迁移,然后让您的 MySQL 服务器脱机。

关于MySQL 密码 () 列 : migration to MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8796959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com