In MySQL Stored Procedures, you have the concept of SQL SECURITY.
It can be either DEFINER or INVOKER
- When you call a Stored Procedure that has
DEFINER for SQL SECURITY, the caller is allowed to have the same grants as the DEFINER for the duration of the call. The GRANT EXECUTE for the specified Stored Procedure is necessary.
- When you call a Stored Procedure that has
INVOKER for SQL SECURITY, the caller is expected to have the needed grants. If any of the needed grants are missing, the call will fail at the earliest point where the needed grant was missing.
For more information, please read the MySQL Documentation on Access Control for Stored Programs and Views
To see the SQL SECURITY for the procedure or function named mydb.myproc, run this:
SELECT security_type FROM information_schema.routines
WHERE routine_schema='mydb' AND routine_name='myproc';