0

我在“锁定”的 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'

这似乎比我想要的要多,因为它为他打开了运行该数据库中任何存储过程的权限,而我只希望他有权运行指定的函数。

有谁知道我的问题可能出在哪里?

4

1 回答 1

0

您创建的受限用户的用户表需要 execute_priv = 'Y'。此授权取代了数据库授权。

于 2010-01-15T12:52:58.010 回答