我在“锁定”的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'
这似乎比我想要的更多,因为它为他打开了在该数据库中运行任何存储过程的权限,而我只希望他有权运行指定的函数。
有谁知道我的问题可能在哪里?
答案 0 :(得分:0)
您已创建的受限用户的用户表 将需要execute_priv ='Y'。此授权取代数据库授权。