有没有办法更改当前用户的密码,为密码引入变量?

时间:2019-11-01 13:38:22

标签: mysql

我正在尝试创建一个过程,该过程允许Java应用程序为登录的用户更改密码。 但是,语句“ ALTER USER user()IDENTIFIED BY”不允许我插入变量作为新密码。 有什么办法可以做到吗?

我尝试使用该过程的参数,声明新变量并使用其他类型,例如BLOB或VARCHAR。

 create procedure change_password 
 (
 in new_password BLOB
 ) 
 begin
    SET @col = new_password;
    ALTER USER user() IDENTIFIED BY @col;
 */end#
 delimiter ;

我希望“更改用户”将变量用作新密码的参数,但这是语法错误,因为它只允许文本通过引号引起来

1 个答案:

答案 0 :(得分:0)

尝试一下

DELIMITER //
CREATE PROCEDURE `change_password`(in new_password text)
BEGIN 
  SET @textnew  =  CONCAT("ALTER USER user() IDENTIFIED BY '",new_password,"';");
  PREPARE stmt FROM @textnew;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
END//
DELIMITER ;

因此对于mysql,您在密码位置上有一个实际的字符串。

但是有很多限制,例如用户必须具有特权。

另请参阅https://dev.mysql.com/doc/refman/5.7/en/alter-user.html