文档主页
MySQL 9.0 参考手册
相关文档 下载此手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  存储例程和 MySQL 权限

27.2.2 存储例程和 MySQL 权限

MySQL 授权系统考虑存储例程,如下所示:

  • CREATE ROUTINE 权限是创建存储例程所需的。

  • ALTER ROUTINE 权限是更改或删除存储例程所需的。如果需要,此权限会自动授予例程创建者,并在例程删除时从创建者撤销。

  • EXECUTE 权限是执行存储例程所需的。但是,如果需要,此权限会自动授予例程创建者(并在例程删除时从创建者撤销)。此外,例程的默认 SQL SECURITY 特性为 DEFINER,这使能够访问与例程关联的数据库的用户可以执行该例程。

  • 如果 automatic_sp_privileges 系统变量为 0,则 EXECUTEALTER ROUTINE 权限不会自动授予例程创建者,也不会从例程创建者撤销。

  • 例程创建者是用来执行其 CREATE 语句的帐户。这可能与例程定义中作为 DEFINER 命名的帐户不同。

  • 命名为例程 DEFINER 的帐户可以查看所有例程属性,包括其定义。因此,该帐户可以完全访问由以下内容生成的例程输出:

  • 对于除命名为例程 DEFINER 的帐户以外的帐户,对例程属性的访问取决于授予该帐户的权限:

    • 使用 SHOW_ROUTINE 权限或全局 SELECT 权限,该帐户可以查看所有例程属性,包括其定义。

    • 使用 CREATE ROUTINEALTER ROUTINEEXECUTE 权限,这些权限授予的范围包含该例程,该帐户可以查看所有例程属性,但其定义除外。