我正在尝试创建一个用于处理数据库的安全远程API。无需创建自己的服务器守护程序,我认为最好的方法是使用存储过程。
我唯一的问题是权限。我希望这些程序能够执行诸如使用密码创建新用户之类的操作。我可以授予权限,但INDENTIFIED BY
总是希望TEXT_STRING
能够获得权限,因此不允许使用变量。
如何在授予权限时允许我的程序设置密码?我想避免创建服务器守护程序或手动修改mysql.user
。
答案 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 ;