1. CREATE ROUTINE
1 GRANT CREATE ROUTINE 2 ON database-name . * 3 TO user(s) 4 [WITH GRANT OPTION];
CREATE ROUTINE可以创建存储过程和函数,还可以创建视图和表.现在内置的root拥有该权限,同时清空有ALTER ROUTINE权限.
2. EXECUTE
1 GRANT EXECUTE 2 ON database-name . * 3 TO user(s) 4 [WITH GRANT OPTION];
EXECUTE决定是否可以使用或执行存储过程,存储过程的创建者默认拥有这个权限.
3. SHOW ROUTINE
1 GRANT SHOW ROUTINE 2 ON database-name . * 3 TO user(s) 4 [WITH GRANT OPTION];
由于我们默认已拥有了控制视图的GRANT SHOW VIEW特权,在此基础上,为保证兼容,将来可能会添加GRANT SHOW ROUTINE特权
4. INVOKERS AND DEFINERS
1 CREATE PROCEDURE p26 () 2 SQL SECURITY INVOKER 3 SELECT COUNT(*) FROM t // 4 CREATE PROCEDURE p27 () 5 SQL SECURITY DEFINER 6 SELECT COUNT(*) FROM t // 7 GRANT INSERT ON db5.* TO peter; //
上面的例子前面已提到,你是root用户创建两个存储过程并将插入权限赋给peter.注意peter没有对表t的select权限,只有root用户有.正因如此,以上代码Peter调用p26会失败,而调用p27会成功,原因见之前章节描述.
时间: 2024-10-05 12:47:04