示例:已授予非超级用户对插入到表"a“中的过程的execute权限。该用户将看到表"a“所在的数据库,但不能看到带有"show tables”的表"a“。但是相同的用户可以看到带有"show procedure status“的基本过程信息。
这是为了审计,我想让审计过程尽可能模糊。如果用户被授予对某个过程执行权限,该用户是否必须有权查看该过程?他们是否必须能够看到该过程所触及的数据库?
发布于 2011-12-10 06:19:39
如果您是该过程的所有者,或者如果您有权访问mysql.proc表,则可以看到here所述的过程定义。
因此,您可以将该过程创建为超级用户,并设置定义器CURRENT_USER (以便该过程以超级用户身份执行)。然后确保超级用户可以访问该表,但其他人不能这样做。这应该会同时保护表和源,但可以对过程进行调用。
而且它不一定是超级用户,可以是任何有权访问该表的用户。
https://stackoverflow.com/questions/8452185
复制相似问题