mysql - 在程序中授予权限

标签 mysql sql stored-procedures permissions passwords

我正在尝试创建一个安全的远程 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/

相关文章:

php - 对 foreach 循环结果进行排序

MySQL:从 200,000 行中获取平均值或总和

stored-procedures - 编写长存储过程是数据库设计和编码风格不好的标志吗?

sql-server-2005 - SQL Server 2005中插入行后的主键值

php - 如何更改 MYSQL PHP 中所选数据的限制?

mysql - 如何向我的 MySQL 数据库中插入 100 万个条目?

php从所有行的同一列中获取特定数据

mysql - SQL 计数返回 0

c# - 可以通过查询结果获取结果集行数吗?

mysql - MySQL如何将所有NEW/OLD触发器数据放入临时表并在程序中使用?