Ano... toto funguje podle očekávání, pokud uživateli neudělíte SELECT oprávnění na mysql.proc tabulky, ať už přímo nebo nepřímo, například pomocí GRANT SELECT ON *.* TO ...
Bez SELECT oprávnění v této tabulce, uživatel může vidět existenci uložených procedur a uložených funkcí pouze tam, kde má jiná oprávnění, jako je EXECUTE .
Pod kapotou chybí SELECT na mysql.proc také zabraňuje uživateli vidět procedury, ke kterým nemá přístup prostřednictvím information_schema.routines pseudotabulka.
Neměli byste potřebovat GRANT SELECT ON mysql.proc aby uživatel mohl spouštět procedury nebo funkce... a pokud ano, pak to vypadá jako otázka.