1

私はデータベースが初めてです。データベースの更新がストアド プロシージャを介してのみ行われるようにしたかったのです。エンドユーザーは持っていませんがGRANT UPDATE持っていGRANT EXECUTE ON PROCEDUREます。

この方法で試してみましたが、エンドユーザーにUPDATE許可が必要であることがわかりました。これを達成できる他の方法はありますか?

4

1 に答える 1

2

ドキュメントによると:

p1 に対する EXECUTE 権限を持つすべてのユーザーは、CALL ステートメントで p1 を呼び出すことができます。ただし、p1 が実行されると、DEFINER セキュリティ コンテキストで実行されるため、'admin'@'localhost' (DEFINER 属性で指定されたアカウント) の権限で実行されます。このアカウントには、p1 に対する EXECUTE 権限と、テーブル t1 に対する UPDATE 権限が必要です。それ以外の場合、手順は失敗します。

そのため、DEFINER を許可されたユーザー アカウントに設定し、エンド ユーザーにのみ手順を実行できるようにする必要があります。

于 2012-09-11T16:32:16.077 に答える