在过程中授予权限

时间:2015-03-14 17:02:24

标签: mysql sql stored-procedures permissions passwords

我正在尝试创建一个用于处理数据库的安全远程API。无需创建自己的服务器守护程序,我认为最好的方法是使用存储过程。

我唯一的问题是权限。我希望这些程序能够执行诸如使用密码创建新用户之类的操作。我可以授予权限,但INDENTIFIED BY总是希望TEXT_STRING能够获得权限,因此不允许使用变量。

如何在授予权限时允许我的程序设置密码?我想避免创建服务器守护程序或手动修改mysql.user

1 个答案:

答案 0 :(得分:0)

我能用准备好的声明做到这一点。

DELIMITER //

CREATE PROCEDURE myProc(param VARCHAR(20))
BEGIN
    SET @cmd = CONCAT('GRANT ... ON ... TO ... IDENTIFIED BY ''', param, ''';');
    PREPARE stmt FROM @cmd;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
    FLUSH PRIVILEGES;
END//

DELIMITER ;