Пару раз сталкивался с ошибкой при вызове хранимых процедур:
User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted, configure connection with «noAccessToProcedureBodies=true» to have driver generate parameters that represent INOUT strings irregardless of actual parameter types.
Решение, предлагаемое в тексте исключения — использовать параметр noAccessToProcedureBodies в строке подключения (отключение доступа), но меня интересовал вопрос, как дать доступ к телам процедур.
Характерно, что по тексту вышеприведенной ошибки находится огромное количество ссылок, большинство которых описывает, как правильно прописать параметр в URL подключения.
А решение оказалось очень простым: все процедуры хранятся в таблице `mysql`.`proc`, соответственно надо всего лишь выполнить комманду:
GRANT SELECT ON `mysql`.`proc` to 'myuser'@'myhost';
Немного неожиданно, поскольку по привычке думаешь, что GRANT ALL уже все должен был решить.
Автор: 0xBA0BAB