Sua segunda tentativa é a abordagem correta:
GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser'@'localhost';
mas se isso não funcionar, verifique ...
a) você (o usuário do qual você está executando todos esses comandos) tem direitos de concessão [ou seja, COM GRANT OPTION]. Se você é root, então você tem direitos de concessão.
b) o usuário existe ao qual você está concedendo permissão de execução, por exemplo.
select user from mysql.user where user like 'test%';
Caso contrário, crie o usuário, por exemplo.
CREATE USER 'TestUser'@'localhost' IDENTIFIED BY 'passwordxxxx';
#depending on your needs
GRANT SELECT,DELETE,UPDATE PRIVILEGES ON myDb.* TO 'TestUser'@'localhost';
Espero que isto ajude :)