首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何授予用户对特定存储过程execute权限

如何授予用户对特定存储过程execute权限
EN

Stack Overflow用户
提问于 2014-06-30 23:08:58
回答 2查看 20.7K关注 0票数 9

我在一个特定的模式上创建了一些存储过程。

在这个存储过程中,我想授予execute特权。

所以我写下了:

代码语言:javascript
复制
GRANT EXECUTE ON PROCEDURE schema_name.proc_name TO 'user_name';
GRANT SELECT ON mysql.proc to 'user_name';

问题是:我的用户可以看到每个存储过程。我希望他只能看到他拥有EXECUTE特权的过程。

有没有办法做到这一点?

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-07-01 09:06:22

是的..。如果您没有直接或间接地授予用户对mysql.proc表的SELECT权限(例如使用GRANT SELECT ON *.* TO ... ),则此操作将按预期工作

如果没有对该表的SELECT权限,则用户只能看到他们具有其他权限(如EXECUTE )的存储过程和存储函数的存在。

在幕后,mysql.proc上缺少SELECT也阻止了用户通过information_schema.routines伪表查看他们无权访问的过程。

您不应该需要使用GRANT SELECT ON mysql.proc来使用户能够执行过程或函数...如果你这样做了,那么这似乎就是问题所在。

票数 5
EN

Stack Overflow用户

发布于 2014-07-01 15:48:45

问题解决了。

实际上,为了能够在MySQLForExcel中执行存储过程,我们需要设置希望由MySQLForExcel用户调用的每个存储过程的定义器。

代码语言:javascript
复制
DELIMITER $$

DROP PROCEDURE IF EXISTS `procedure_name` $$
CREATE DEFINER=`user_mysqlforexcel` PROCEDURE `procedure_name`(param)
BEGIN
     Do smth as usual
END $$

I found that here

谢谢你的帮助。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24493288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档