Twoja druga próba to właściwe podejście:
GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser'@'localhost';
ale jeśli to nie działa, sprawdź...
a) Ty (użytkownik, od którego uruchamiasz wszystkie te polecenia) masz uprawnienia do przyznania [tj. Z OPCJĄ PRZYZNANIA]. Jeśli jesteś rootem, masz uprawnienia do nadawania.
b) istnieje użytkownik, któremu przyznajesz uprawnienia do wykonywania, np.
select user from mysql.user where user like 'test%';
Jeśli nie, utwórz użytkownika, np.
CREATE USER 'TestUser'@'localhost' IDENTIFIED BY 'passwordxxxx';
#depending on your needs
GRANT SELECT,DELETE,UPDATE PRIVILEGES ON myDb.* TO 'TestUser'@'localhost';
Mam nadzieję, że to pomoże :)