我正在尝试创建一个安全的远程 API 来使用数据库。我认为最好的方法是使用存储过程,而无需创建自己的服务器守护程序。
我唯一的问题是权限。我希望这些程序能够执行诸如使用密码创建新用户之类的操作。我可以授予权限,但 INDENTIFIED BY
总是希望在其后面有一个 TEXT_STRING
,因此不允许使用变量。
如何允许我的程序在授予权限时设置密码?我想避免创建服务器守护程序或手动修改 mysql.user
。
最佳答案
我能够通过准备好的声明来做到这一点。
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 ;
关于mysql - 在程序中授予权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29051692/