我正在尝试创建一个过程,该过程允许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 ;
我希望“更改用户”将变量用作新密码的参数,但这是语法错误,因为它只允许文本通过引号引起来
答案 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,您在密码位置上有一个实际的字符串。
但是有很多限制,例如用户必须具有特权。