Su segundo intento es el enfoque correcto:
GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser'@'localhost';
pero si eso no funciona, verifique...
a) usted (el usuario desde el que está ejecutando todos estos comandos) tiene derechos de concesión [es decir, CON OPCIÓN DE CONCESIÓN]. Si es root, entonces tiene derechos de concesión.
b) existe el usuario al que le está otorgando permiso de ejecución, por ejemplo,
select user from mysql.user where user like 'test%';
De lo contrario, cree el usuario, por ejemplo,
CREATE USER 'TestUser'@'localhost' IDENTIFIED BY 'passwordxxxx';
#depending on your needs
GRANT SELECT,DELETE,UPDATE PRIVILEGES ON myDb.* TO 'TestUser'@'localhost';
Espero que esto ayude :)