私はデータベースが初めてです。データベースの更新がストアド プロシージャを介してのみ行われるようにしたかったのです。エンドユーザーは持っていませんが、GRANT UPDATE
持っていGRANT EXECUTE ON PROCEDURE
ます。
この方法で試してみましたが、エンドユーザーにUPDATE
許可が必要であることがわかりました。これを達成できる他の方法はありますか?
私はデータベースが初めてです。データベースの更新がストアド プロシージャを介してのみ行われるようにしたかったのです。エンドユーザーは持っていませんが、GRANT UPDATE
持っていGRANT EXECUTE ON PROCEDURE
ます。
この方法で試してみましたが、エンドユーザーにUPDATE
許可が必要であることがわかりました。これを達成できる他の方法はありますか?
ドキュメントによると:
p1 に対する EXECUTE 権限を持つすべてのユーザーは、CALL ステートメントで p1 を呼び出すことができます。ただし、p1 が実行されると、DEFINER セキュリティ コンテキストで実行されるため、'admin'@'localhost' (DEFINER 属性で指定されたアカウント) の権限で実行されます。このアカウントには、p1 に対する EXECUTE 権限と、テーブル t1 に対する UPDATE 権限が必要です。それ以外の場合、手順は失敗します。
そのため、DEFINER を許可されたユーザー アカウントに設定し、エンド ユーザーにのみ手順を実行できるようにする必要があります。