存储过程与权限管理
在 seekdb 中,PL 权限用于管理用户对存储过程和存储函数的操作。存储过程是数据库中的一种例程,可以通过 CREATE PROCEDURE 和 CREATE FUNCTION 语句创建,并可在创建时指定其所属的数据库。执行存储过程时使用 CALL 语句,而存储函数则在表达式中直接引用,并在计算表达式时返回一个值。
存储过程创建与权限
seekdb 权限体系与存储过程的关系如下:
| 权限 | 描述 |
|---|---|
| CREATE ROUTINE | 可创建 PROCEDURE 和 FUNCTION 的权限。 |
| EXECUTE | 可执行 PROCEDURE 和 FUNCTION 的权限。 |
| ALTER ROUTINE | 可修改和删除 PROCEDURE 和 FUNCTION 的权限。 |
-
创建存储过程需要拥有
CREATE ROUTINE权限。在授予CREATE ROUTINE权限后,用户可以创建PROCEDURE。 -
在创建完
PROCEDURE之后,系统会自动为创建的PROCEDURE添加对应的EXECUTE和ALTER ROUTINE权限。
示例如下:
GRANT CREATE ROUTINE ON my.* TO mingye;
CREATE PROCEDURE p1()
-> BEGIN
-> SELECT 1 FROM dual;
-> END;
-> /
返回结果如下:
+---------------------------------------------------------------------+
| Grants for mingye@% |
+---------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `mingye`@`%` |
| GRANT CREATE ROUTINE ON `my`.* TO `mingye`@`%` |
| GRANT EXECUTE, ALTER ROUTINE ON PROCEDURE `my`.`p1` TO `mingye`@`%` |
+---------------------------------------------------------------------+