存储的例程和MySQL特权
MySQL授予系统将存储的例程考虑如下:
- 将
CREATE ROUTINE
需要的权限来创建存储例程。 - 在
ALTER ROUTINE
需要的权限更改或删除保存的程序。如有必要,此特权会自动授予例程的创建者,并在删除例程后从创建者中删除。 - 该
EXECUTE
权限才能执行存储程序。但是,如果有必要,此特权会自动授予例程的创建者(在删除例程后会从创建者中删除)。此外,SQL SECURITY
例程的默认特征是DEFINER
,这使有权访问与该例程相关联的数据库的用户可以执行该例程。 - 如果
automatic_sp_privileges
系统变量为0,则不会自动将EXECUTE
和ALTER ROUTINE
特权授予例程创建者并从例程创建者中删除。 - 例程的创建者是用于为其执行
CREATE
语句的帐户。这可能DEFINER
与例程定义中名为的帐户不同。 名为例程的帐户
DEFINER
可以参见所有例程属性,包括其定义。因此,该帐户可以完全访问由以下人员产生的常规输出:INFORMATION_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
在包括次序的范围授予权限,帐户可以看到,除了它的定义所有的常规属性。
- 使用该