Il tuo secondo tentativo è l'approccio giusto:
GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser'@'localhost';
ma se non funziona, verifica ...
a) tu (l'utente da cui stai eseguendo tutti questi comandi) hai i diritti di concessione [cioè WITH GRANT OPTION]. Se sei root, hai i diritti di concessione.
b) esiste l'utente a cui stai concedendo l'autorizzazione all'esecuzione, ad es.
select user from mysql.user where user like 'test%';
In caso contrario, crea l'utente ad es.
CREATE USER 'TestUser'@'localhost' IDENTIFIED BY 'passwordxxxx';
#depending on your needs
GRANT SELECT,DELETE,UPDATE PRIVILEGES ON myDb.* TO 'TestUser'@'localhost';
Spero che questo aiuti :)