在我们的解决方案中,MySQL数据库的用户管理是自动化的。今天我们使用的是MySQL 5.6,但是我们想要迁移到MySQL 8。
根据https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/mysql-nutshell.html .mysql
IDENTIFIED BY PASSWORD被移除了。不幸的是,这是我们利用的东西。我们将密码的哈希存储在数据库之外,然后每当需要创建用户时,我们就可以使用它直接创建帐户,而不必真正知道密码。
为什么不立即创建用户并消除对外部存储的需求?
我们还利用MySQL的主机概念来限制来自特定IP地址的访问。然而,这种情况可能会改变。用例:
最终的结果是一个限制性的解决方案,用户不知道在技术上存在两个帐户。我们也不知道用户的密码。
据我所知,这个解决方案在MySQL 8中无法继续工作,因此我正在研究可能的迁移路径。一种可能的解决办法是,如果可能的话:
是否可以在MySQL中创建一个新用户并将其密码和身份验证插件设置为与其他用户完全相同的密码,而无需实际知道MySQL 8的底层密码?如果是的话,我们可以通过简单地复制我们拥有的信息来使用这个技巧来创建任何额外的用户。在创建第一个初始用户时,我们只需要知道密码,但是每当一个新的IP入口被授予访问权限时,我们就可以执行一个“复制”逻辑。
有什么想法吗?提前感谢!
发布于 2020-01-24 14:00:52
我们需要执行额外的检查,但我们找到的一个解决方法是手动将"mysql.user“中的”mysql.user“和"plugin”设置为所需的值,然后执行“刷新权限”。也就是说,继续使用'mysql_native_password‘和sha1(sha1(密码)),我们知道哈希值计算为。
不过,这样我们就无法使用新的默认身份验证插件。快速检查还表明,caching_sha2_password (新默认值)没有稳定的authentication_string wrt密码。具有相同密码的两个用户产生了不同的值,因此我假设它的实现在所使用的输入方面更高级。
https://dba.stackexchange.com/questions/258138
复制相似问题