在mysql的官方文档中:
automatic_sp_privileges
Variable Name automatic_sp_privileges
When this variable has a value of 1 (the default), the server automatically grants the EXECUTE and ALTER ROUTINE privileges
to the creator of a stored routine, if the user cannot already execute and alter or drop the routine. (The ALTER ROUTINE
privilege is required to drop the routine.) The server also automatically drops those privileges from the creator when the routine
is dropped. If automatic_sp_privileges is 0, the server does not automatically add or drop these privileges
在测试的时候,create procedure
book@localhost book>DELIMITER ;;
book@localhost book>CREATE DEFINER=`book`@`%` PROCEDURE `employee_test`(IN `test_name` char(64))
-> DETERMINISTIC
-> BEGIN
-> set @sum=(select count(*) from employee where name=test_name);
-> if(@sum>0) then
-> select * from test;
-> end if;
-> END ;;
Query OK, 0 rows affected, 1 warning (0.00 sec)
book@localhost book>delimiter ;
book@localhost book>show warnings;
+---------+------+------------------------------------------------------+
| Level | Code | Message |
+---------+------+------------------------------------------------------+
| Warning | 1404 | Failed to grant EXECUTE and ALTER ROUTINE privileges |
+---------+------+------------------------------------------------------+
1 row in set (0.00 sec)
为什么会 Failed to grant EXECUTE and ALTER ROUTINE privileges ?