Spec-Zone.ru › MySQL 8.4

27.2.2 Хранимые процедуры и привилегии MySQL

Система разрешений MySQL учитывает хранимые процедуры следующим образом:

  • Для создания хранимых процедур требуется привилегия CREATE ROUTINE.

  • Для изменения или удаления хранимых процедур требуется привилегия ALTER ROUTINE. Эта привилегия автоматически предоставляется создателю процедуры при необходимости и отменяется при удалении процедуры.

  • Для выполнения хранимых процедур необходима привилегия EXECUTE. Однако эта привилегия автоматически предоставляется создателю процедуры при необходимости (и отменяется при удалении процедуры). Также по умолчанию свойство SQL SECURITY для процедуры установлено в значение DEFINER, что позволяет пользователям, имеющим доступ к базе данных, с которой связана процедура, выполнять эту процедуру.

  • Если значение системной переменной automatic_sp_privileges равно 0, привилегии EXECUTE и ALTER ROUTINE не предоставляются и не отменяются автоматически для создателя процедуры.

  • Создателем процедуры является учётная запись, используемая для выполнения соответствующего оператора CREATE. Это может отличаться от учётной записи, указанной в качестве DEFINER в определении процедуры.

  • Учётная запись, указанная как учётная запись DEFINER процедуры, может видеть все свойства процедуры, включая её определение. Таким образом, учетная запись имеет полный доступ к выводу процедуры, генерируемому:

    • Из содержимого таблицы Информационной схемы ROUTINES.

    • С помощью операторов SHOW CREATE FUNCTION и SHOW CREATE PROCEDURE.

    • С помощью операторов SHOW FUNCTION CODE и SHOW PROCEDURE CODE.

    • С помощью операторов SHOW FUNCTION STATUS и SHOW PROCEDURE STATUS.

  • Для учётной записи, отличной от учётной записи, указанной как учётная запись DEFINER процедуры, доступ к свойствам процедуры зависит от предоставленных привилегий:

    • При наличии привилегии SHOW_ROUTINE или глобальной привилегии SELECT, учётная запись может видеть все свойства процедуры, включая её определение.

    • При наличии привилегии CREATE ROUTINE, ALTER ROUTINE или EXECUTE, предоставленной на уровне, включающем процедуру, учётная запись может видеть все свойства процедуры, кроме её определения.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/stored-routines-privileges.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API