MySQL 8.0 リファレンスマニュアル


25.2.2 ストアドルーチンと MySQL 権限

MySQL 許可システムはストアドルーチンを次のように考慮します。

  • ストアドルーチンを生成するには、CREATE ROUTINE 権限が必要です。

  • ストアドルーチンを変更または削除するには、ALTER ROUTINE 権限が必要です。 この権限は、必要に応じて、ルーチンの作成者に自動的に与えられ、ルーチンが削除されると作成者から削除されます。

  • ストアドルーチンを実行するには、EXECUTE 権限が必要です。 ただし、この権限は、必要に応じて、ルーチンの作成者に自動的に与えられます (ルーチンが削除されると作成者から削除されます)。 また、ルーチンのデフォルトの SQL SECURITY 特性は DEFINER であり、これにより、ルーチンが関連付けられているデータベースにアクセス可能なユーザーがルーチンを実行できるようになります。

  • automatic_sp_privileges システム変数が 0 である場合、EXECUTE および ALTER ROUTINE 権限は作成者に対して自動的には付与および削除されません。

  • ルーチンの作成者は、ルーチンの CREATE ステートメントを実行するために使用されるアカウントです。 これは、ルーチン定義で DEFINER として名前が指定されているアカウントと同じでないことがあります。

  • ルーチン DEFINER として指定されたアカウントは、その定義を含むすべてのルーチンプロパティーを表示できます。 したがって、アカウントは、次によって生成されるルーチン出力への完全なアクセス権を持ちます:

    • INFORMATION_SCHEMA.ROUTINES テーブルの内容。

    • SHOW CREATE FUNCTION および SHOW CREATE PROCEDURE ステートメント。

    • SHOW FUNCTION CODE および SHOW PROCEDURE CODE ステートメント。

    • SHOW FUNCTION STATUS および SHOW PROCEDURE STATUS ステートメント。

  • ルーチン DEFINER として指定されたアカウント以外のアカウントのルーチンプロパティーへのアクセスは、アカウントに付与された権限によって異なります:

    • SHOW_ROUTINE 権限またはグローバル SELECT 権限を持つアカウントは、その定義を含むすべてのルーチンプロパティを表示できます。

    • CREATE ROUTINEALTER ROUTINE または EXECUTE 権限がルーチンを含むスコープで付与されている場合、アカウントはその定義を除くすべてのルーチンプロパティを表示できます。


関連キーワード:  権限, ルーチン, ストアドルーチン, アカウント, ROUTINE, 削除, ステートメント, 定義, イベントスケジューラ, CREATE