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