我在“锁定”的 mysql 服务器上创建了用户“restricteduser”。mysql.user 表有一个 N 表示该帐户的所有权限。mysql.db 表的 Y 仅代表 Select、Insert、Update、Delete、Create、Drop;该帐户的所有其他权限均为 N。我尝试创建一个存储过程,然后授予他访问权限以仅运行该过程,不运行其他过程,但它不起作用。
用户收到:错误:执行命令拒绝用户 'restricteduser'@'%' 用于例程 'mydb.functionname'
存储过程:
CREATE DEFINER = 'restriceduser'@'%' FUNCTION `functionname`(sIn MEDIUMTEXT, sformat MEDIUMTEXT)
RETURNS int(11)
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
....
END;
我试过的授权声明:
GRANT EXECUTE ON PROCEDURE mydb.functionname TO 'restricteduser'@'%';
我可以通过修改他的 mysql.db 条目来解决
update mysql.db set execute_priv='Y' where user='restricteduser'
这似乎比我想要的要多,因为它为他打开了运行该数据库中任何存储过程的权限,而我只希望他有权运行指定的函数。
有谁知道我的问题可能出在哪里?