Разница между SQL SECURITY DEFINER и SQL SECURITY INVOKER заключается в том, с какими правами выполняется выполнение сохранённых процедур (процедур и функций) и представлений. 15
SQL SECURITY DEFINER (безопасность определившего) означает, что сохранённый объект выполняется с правами пользователя, указанного атрибутом DEFINER. 15 Эти права могут быть полностью отличными от прав вызывающего пользователя. 1 Вызывающий пользователь должен иметь соответствующие привилегии для обращения к объекту (например, EXECUTE для вызова сохранённой процедуры или SELECT для выбора из представления), но во время выполнения объекта привилегии вызывающего пользователя игнорируются, важны только привилегии учётной записи DEFINER. 1
SQL SECURITY INVOKER (безопасность вызывающего) означает, что сохранённая процедура или представление выполняются с правами вызывающего пользователя. 14 При этом атрибут DEFINER не влияет на выполнение объекта. 15
Таким образом, при использовании SQL SECURITY DEFINER объект ограничен в операциях, которые он может выполнять, а при использовании SQL SECURITY INVOKER — доступны только те операции, для которых у вызывающего пользователя есть привилегии. 1