版权说明: 本文由博主keep丶原创,转载请注明出处。
原文地址: https://blog.csdn.net/qq_38688267/article/details/114831524
关于存储过程/函数/触发器的权限
在MySQL8中,当我们创建存储过程/函数/触发器
(下文统一称作FUNC
)时,如果没有显示指定definer
,则会默认当前用户为该FUNC
的definer
,如果没有相关授权,则其他用户是看不了这个FUNC
的。
- 在MySQL8.0.20之前,需要授权如下授权后才能看到其他用户定义的
FUNC
:
GRANT create routine,alter routine,execute,TRIGGER,SYSTEM_USER,EVENT,select on *.* to 'YOUR_USERNAME';
- 在MySQL8.0.20及之后,则:
grant create routine,alter routine,execute,TRIGGER,SYSTEM_USER,EVENT,show_routine on *.* to 'data_group';
区别在于8.0.20之前需要授比较高的SELECT
权限,而8.0.20中专门增加了show_routine
的权限用于表示查看FUNC
的权限,关于这点在MySQL官方文档中有说明:
关于修改存储过程/函数/触发器的definer
关于这个问题,官方的原话是不支持修改!只有视图和事件支持修改definer,存储过程/函数/触发器只能通过删除后重新创建的方式实现。