MySQL 8.4 Release Notes
27.2.2 存储例程和 MySQL 权限
MySQL 权限系统将存储例程考虑在内如下:
-
需要
CREATE ROUTINE
权限来创建存储例程。 -
需要
ALTER ROUTINE
权限来修改或删除存储例程。这权限将自动授予创建例程的账户,如果必要,并在删除例程时撤销。 -
需要
EXECUTE
权限来执行存储例程。然而,这权限将自动授予创建例程的账户,如果必要(并在删除例程时撤销)。此外,存储例程的默认SQL SECURITY
特性为DEFINER
-
如果
automatic_sp_privileges
系统变量为 0,EXECUTE
和ALTER ROUTINE
权限将不自动授予和撤销创建例程的账户。 -
创建例程的账户是执行
CREATE
语句的账户。这可能不同于例程定义中指定的DEFINER
账户。 -
指定例程
DEFINER
的账户可以看到所有例程属性,包括其定义。该账户因此拥有对例程输出的完全访问权限,如:-
信息_schema
ROUTINES
表的内容。 -
SHOW CREATE FUNCTION
和SHOW CREATE PROCEDURE
语句。 -
SHOW FUNCTION CODE
和SHOW PROCEDURE CODE
语句。 -
SHOW FUNCTION STATUS
和SHOW PROCEDURE STATUS
语句。
-
-
对于非指定例程
DEFINER
账户的账户,访问例程属性的权限取决于授予的权限:-
使用
SHOW_ROUTINE
特权或全局SELECT
特权,账户可以查看所有存储程序的属性,包括定义。 -
使用
CREATE ROUTINE
、ALTER ROUTINE
或EXECUTE
特权,在包含存储程序的范围内授予的账户,可以查看所有存储程序的属性,但不包括定义。
-