Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Stored Routines and MySQL Privileges

27.2.2 存储例程和 MySQL 权限

MySQL 授权系统考虑存储例程的方式如下:

  • 需要 CREATE ROUTINE 权限来创建存储例程。

  • 需要 ALTER ROUTINE 权限来修改或删除存储例程。如果必要,这个权限将自动授予例程的创建者,并在例程被删除时从创建者那里撤销。

  • 需要 EXECUTE 权限来执行存储例程。然而,这个权限将自动授予例程的创建者,如果必要(并在例程被删除时从创建者那里撤销)。此外,例程的默认 SQL SECURITY 特征是 DEFINER,这使得拥有与例程关联的数据库访问权限的用户可以执行例程。

  • 如果 automatic_sp_privileges 系统变量为 0,那么 EXECUTEALTER ROUTINE 权限将不会自动授予和撤销例程的创建者。

  • 例程的创建者是执行 CREATE 语句的账户。这可能与例程定义中的 DEFINER 不同。

  • 例程的 DEFINER 账户可以看到所有例程属性,包括其定义。因此,该账户拥有对例程输出的完全访问权限,如由:

  • 对于不是例程 DEFINER 的账户,访问例程属性取决于授予该账户的权限: