mysql.db表上Execute_priv的含义

时间:2009-08-13 20:46:14

标签: mysql grant

我在“锁定”的mysql服务器上创建了用户'restrictededuser'。 mysql.user表对该帐户的所有priveled都有一个N. mysql.db表只有Y表示选择,插入,更新,删除,创建,删除;该帐户的所有其他权限均为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'

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

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

1 个答案:

答案 0 :(得分:0)

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