23.2.2 存储的例程和 MySQL 特权

MySQL 授予系统将存储的例程考虑在内,如下所示:

  • 创建存储的例程需要CREATE ROUTINE特权。

  • 需要ALTER ROUTINE特权才能更改或删除存储的例程。如有必要,此特权将自动授予例程的创建者,并在删除例程后从创建者中删除。

  • 执行存储的例程需要EXECUTE特权。但是,如有必要,此特权会自动授予例程的创建者(在删除例程后会从创建者中删除)。另外,例程的默认SQL SECURITY特性是DEFINER,这使有权访问与该例程相关联的数据库的用户可以执行该例程。

  • 如果automatic_sp_privileges系统变量为 0,则不会自动将EXECUTEALTER ROUTINE特权授予例程创建者或从例程创建者中删除。

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

服务器响应创建,更改或删除存储例程的语句来操纵mysql.proctable。服务器不支持手动对该 table 进行操作,这是不支持的。