23.2.2 存储的例程和 MySQL 特权
MySQL 授予系统将存储的例程考虑在内,如下所示:
-
创建存储的例程需要CREATE ROUTINE特权。
-
需要ALTER ROUTINE特权才能更改或删除存储的例程。如有必要,此特权将自动授予例程的创建者,并在删除例程后从创建者中删除。
-
执行存储的例程需要EXECUTE特权。但是,如有必要,此特权会自动授予例程的创建者(在删除例程后会从创建者中删除)。另外,例程的默认
SQL SECURITY
特性是DEFINER
,这使有权访问与该例程相关联的数据库的用户可以执行该例程。 -
如果automatic_sp_privileges系统变量为 0,则不会自动将EXECUTE和ALTER ROUTINE特权授予例程创建者或从例程创建者中删除。
-
例程的创建者是用于为其执行
CREATE
语句的帐户。这可能与例程定义中名为DEFINER
的帐户不同。
服务器响应创建,更改或删除存储例程的语句来操纵mysql.proc
table。服务器不支持手动对该 table 进行操作,这是不支持的。