Tri*_*erZ 7 mysql stored-procedures grant
我已经在特定架构上创建了一些存储过程.
在此存储过程中,我想授予执行权限.
所以我写道:
GRANT EXECUTE ON PROCEDURE schema_name.proc_name TO 'user_name';
GRANT SELECT ON mysql.proc to 'user_name';
Run Code Online (Sandbox Code Playgroud)
问题是:我的用户可以看到每个存储过程.我希望他只能看到他拥有EXECUTE特权的程序.
有没有办法实现这一目标?
提前致谢.
是的...如果您不直接或间接授予用户SELECT对该mysql.proc表的权限,例如使用GRANT SELECT ON *.* TO ...
没有SELECT此表的权限,用户只能看到他们拥有其他权限的存储过程和存储函数的存在,例如EXECUTE.
在幕后,缺少SELECTonmysql.proc还阻止用户查看他们无法通过information_schema.routines伪表访问的过程。
您不需要GRANT SELECT ON mysql.proc让用户能够执行过程或功能……如果您这样做了,那么这似乎是个问题。