【问题标题】:MySQL - Change Password - shouldn't use old PWMySQL - 更改密码 - 不应使用旧密码
【发布时间】:2014-12-10 14:30:03
【问题描述】:

问题是我更改了 mysql-db-user 的密码并且可以使用旧密码——但这就是我想要禁止的。

例子:

  • 旧密码:“test”(在 DB 中加密 - 我如何将其与新 PW 进行比较?)

  • 新密码:“test” -> 应该会报错,因为它与旧密码相同

如何比较旧密码和新密码?或者 MySQL-Workbench 的设置中有一个选项吗?非常感谢!

编辑: 我正在考虑更改 mysql.user 中列出的数据库用户的密码

【问题讨论】:

  • 您是如何更改密码的?您是否尝试在更新密码后运行FLUSH PRIVILEGES;
  • 是的,我做到了,但是mysql没有识别出“不改变”(旧密码==新密码)

标签: mysql database passwords compare workbench


【解决方案1】:

我不太确定你的工作流程,但在 php 中,你应该可以做类似的事情

$email = $_POST['email'] /*email posted from "password change" page*/

$query = mysqli_query($db,"SELECT `password` FROM `users` WHERE `email` = '$email'");
$result = mysqli_num_rows($query);

$new_password = $_POST['new_password'] /*this is your new password*/

if( $new_password == $result['password']){
    /*password is the same as previous*/
} else {
    /*password is new*/
}

代码未经测试,但如果它不工作应该关闭

【讨论】:

  • 我尝试在 Java 中实现它,但是密码是加密的——当然为什么不^^,但是谢谢。
【解决方案2】:

如果FLUSH PRIVILEGES 不能创建一个新数据库,然后以这种方式进行比较?

【讨论】:

    【解决方案3】:

    好的,我明白了 - 这是一个简单的解决方案:

    首先我询问用户名的旧密码并将输入与用户想要设置的新密码进行比较。如果两者相同,我的应用程序会抛出错误。示例:

    旧密码:“测试” 新密码:“测试”--> 错误:旧密码 == 新密码

    也许 MySQL Workbench 中有一个选项 - 但我没有找到类似的东西。

    【讨论】:

      猜你喜欢
      • 2017-11-12
      • 1970-01-01
      • 2011-06-28
      • 2013-03-21
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      • 2015-02-13
      相关资源
      最近更新 更多