ストアドルーチンでは、mysq
データベース中にproc
テーブルが要求されます。このテーブルはMySQL
5.1をインストールしている最中に生成されます。旧バージョンのMySQLからMySQL
5.1にアップグレードする場合、ユーザのグラントテーブルが更新され、proc
テーブルが存在しているか確認してください。項4.5.4. 「mysql_upgrade — MySQL アップグレードのテーブル チェック」
を参照してください。
サーバはストアドルーチンを生成、変更もしくは撤去するステートメントに対して、mysql.proc
テーブルを操作します。このテーブルの手動操作のサポートは、サーバに通知されません。
MySQL グラントシステムはストアドルーチンを以下の通り取り扱います。
ストアドルーチンを生成するため、CREATE
ROUTINE
特権が必要です。
ストアドルーチンの変更・撤去には、ALTER
ROUTINE
権限が必要です。必要な場合、この権限はルーチン生成者に自動的に与えられますが、生成者がルーチンを廃止すると、権限も消滅します。
ストアドルーチンを実行するため、EXECUTE
権限が要求されます。必要な場合、この権限はルーチン生成者に自動的に与えられます。(生成者がルーチンを撤去すると、権限も消滅します)ルーチンのデフォルト設定SQL
SECURITY
もDEFINER
です。これは、ルーチンに関連するデータベースにアクセス可能なユーザがルーチンを実行できるようにします。
automatic_sp_privileges
システム変数がゼロである場合、EXECUTE
およびALTER
ROUTINE
権限は自動的に供与・除去されません。