Oui... cela fonctionne comme prévu si vous n'accordez pas à l'utilisateur le SELECT
privilège sur mysql.proc
table, directement ou indirectement, comme avec GRANT SELECT ON *.* TO ...
Sans SELECT
autorisation sur cette table, un utilisateur ne peut voir l'existence de procédures stockées et de fonctions stockées que là où il a d'autres autorisations, comme EXECUTE
.
Sous le capot, l'absence de SELECT
sur mysql.proc
empêche également l'utilisateur de voir les procédures auxquelles il n'a pas accès via les information_schema.routines
pseudo-table.
Vous ne devriez pas avoir besoin de GRANT SELECT ON mysql.proc
pour permettre à l'utilisateur d'exécuter des procédures ou des fonctions... et si vous le faites, alors ça semble être la question.