首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在password_hash 8中删除密码“MySQL”时的迁移路径

问在password_hash 8中删除密码“MySQL”时的迁移路径
EN

Database Administration用户
提问于 2020-01-24 13:24:09
回答 1查看 554关注 0票数 0

在我们的解决方案中,MySQL数据库的用户管理是自动化的。今天我们使用的是MySQL 5.6,但是我们想要迁移到MySQL 8。

根据https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/mysql-nutshell.html .mysql

代码语言:javascript
复制
IDENTIFIED BY PASSWORD

被移除了。不幸的是,这是我们利用的东西。我们将密码的哈希存储在数据库之外,然后每当需要创建用户时,我们就可以使用它直接创建帐户,而不必真正知道密码。

为什么不立即创建用户并消除对外部存储的需求?

我们还利用MySQL的主机概念来限制来自特定IP地址的访问。然而,这种情况可能会改变。用例:

  1. 新用户“myUser”应从1.2.3.4开始,密码为“myPassword”
  2. “myPassword”的散列是与外部存储中的其他元数据一起计算和存储的。
  3. 使用给定的散列创建MySQL用户myUser@1.2.3.4
  4. 以后,用户也应该可以从IP 5.6.7.8访问
  5. 没有问题,一个新的MySQL用户myUser@5.6.7.8是使用与前面相同的哈希创建的。

最终的结果是一个限制性的解决方案,用户不知道在技术上存在两个帐户。我们也不知道用户的密码。

据我所知,这个解决方案在MySQL 8中无法继续工作,因此我正在研究可能的迁移路径。一种可能的解决办法是,如果可能的话:

是否可以在MySQL中创建一个新用户并将其密码和身份验证插件设置为与其他用户完全相同的密码,而无需实际知道MySQL 8的底层密码?如果是的话,我们可以通过简单地复制我们拥有的信息来使用这个技巧来创建任何额外的用户。在创建第一个初始用户时,我们只需要知道密码,但是每当一个新的IP入口被授予访问权限时,我们就可以执行一个“复制”逻辑。

有什么想法吗?提前感谢!

EN

回答 1

Database Administration用户

发布于 2020-01-24 14:00:52

我们需要执行额外的检查,但我们找到的一个解决方法是手动将"mysql.user“中的”mysql.user“和"plugin”设置为所需的值,然后执行“刷新权限”。也就是说,继续使用'mysql_native_password‘和sha1(sha1(密码)),我们知道哈希值计算为。

不过,这样我们就无法使用新的默认身份验证插件。快速检查还表明,caching_sha2_password (新默认值)没有稳定的authentication_string wrt密码。具有相同密码的两个用户产生了不同的值,因此我假设它的实现在所使用的输入方面更高级。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/258138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档