how to GRANT EXECUTE on MySQL
It is impossible to run this command:

GRANT EXECUTE ON `mysql`.`store_time_zone` TO 'user'@'%';


Here is why:


The EXECUTE grant exists at the global level
The EXECUTE grant exists at the database level
The EXECUTE grant does not exist at the table level
The EXECUTE grant does not exist at the column level


Here is how you can prove it:

User grants for MySQL exist in four(4) MyISAM tables


mysql.user (Global grants)
mysql.db (Database level grants)
mysql.tables_priv (Table level grants)
mysql.columns_priv (Column level grants)


If you run this query

mysql&gt; select concat(table_schema,'.',table_name)
    -&gt; from information_schema.columns
    -&gt; where table_schema='mysql'
    -&gt; and column_name='execute_priv';
+-------------------------------------+
| concat(table_schema,'.',table_name) |
+-------------------------------------+
| mysql.db                            |
| mysql.user                          |
+-------------------------------------+
2 rows in set (0.03 sec)

mysql&gt;


Only mysql.user and mysql.db have columns in the mysql schema representing the EXECUTE privilege.

Therefore, these commands would work

# Global level EXECUTE privilege
GRANT EXECUTE ON *.* TO 'user'@'%';
# Database level EXECUTE privilege
GRANT EXECUTE ON `mysql`.* TO 'user'@'%';