• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 存储的例程和MySQL特权

    MySQL授予系统将存储的例程考虑如下:

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

      • INFORMATION_SCHEMA.ROUTINES表的内容。
      • SHOW CREATE FUNCTIONSHOW CREATE PROCEDURE语句。
      • SHOW FUNCTION CODESHOW PROCEDURE CODE语句。
      • SHOW FUNCTION STATUSSHOW PROCEDURE STATUS语句。
    • 对于除名为例程的帐户以外的帐户DEFINER,对例程属性的访问取决于授予该帐户的特权:

      • 使用该SHOW_ROUTINE特权或全局SELECT特权,该帐户可以参见所有常规属性,包括其定义。
      • 随着CREATE ROUTINEALTER ROUTINEEXECUTE在包括次序的范围授予权限,帐户可以看到,除了它的定义所有的常规属性。