我为应用程序编写健全性检查脚本。其中一项测试应该验证 MySQL 中是否存在具有“密码”的给定 user@host。我正在使用简单的本机哈希密码。在 MySQL5.7- 中有一个PASSWORD()
函数可以让我查询mysql.user
并验证用户是否存在以及密码是否匹配。MySQL8.0+有办法实现吗?MySQL 5.7 中的文档页面PASSWORD()
不提供任何替代方法,该功能在 MySQL 8.0 中被删除。
我可以简单地尝试再次添加用户,但我觉得我的脚本应该知道并注册一个缺少具有预期凭据的用户的事件。
请注意,我不一定需要生成密码哈希,我只是想验证给定的用户/密码是否存在。这需要自动化,因此“尝试使用主机上的用户名/密码登录”之类的解决方案不算在内,因为我可能无权访问主机
实际上,还有一个 MySQL(实际上是 Oracle)没有提到的替代方案。
Apr 22, 2015
,我发布了密码功能的算法这是算法
给予信用
我最初是从一家名为 PalominoDB 的公司的博客中了解到这一点的。他们改名为黑鸟。Pythian 购买了黑鸟。Pythian 现在将其作为包含此算法的博客文章:MySQL PASSWORD() 中的哈希算法