web-dev-qa-db-ja.com

データベース、Oracle、およびMySQLの定義者権限と呼び出し者権限とは何ですか?

データベース、Oracle、およびMySQLの定義者権限と呼び出し者権限とは何ですか?わかりません。

4
mj-programmer

簡単な例を見てみましょう:

この手順には、「定義者権限」を使用します。これは、Oracleのデフォルトです。

CREATE PROCEDURE DEL_EMP AS
BEGIN
   DELETE FROM EMP;
END;

このプロシージャを呼び出す別のユーザーには、このプロシージャのEXECUTE特権のみが必要です。このようなユーザーがテーブルEMPに対するDELETE特権を持っている必要はありません。

プロシージャは、プロシージャの所有者(またはdefinedが定義されているユーザー、つまり「定義者」権限と呼ばれる)の許可の下で実行されます。

「Inovker Rights」はその逆です。このプロシージャを正常に実行したいユーザーは、このプロシージャのEXECUTE特権andDELETE特権がテーブルEMPに必要です。

定義者と呼び出し者の権利に関しては、さらにいくつかのポイントがありますが、一般的な理解にはこれで十分です。

6

MySQLパースペクティブ

DEFINERおよびINVOKERの権限(別名SQL SECURITY)mysqldがリクエストをどのように見て、mysqlユーザーが何を求めているかを予測する方法を示します。

また、mysqlユーザーが以下に対するすべての必要な権限を持っている場合も同様です。

  • クエリの基になるテーブル
  • ビューの基礎となるテーブル
  • ストアドプロシージャの基になるテーブル
  • EXECUTE特権 ストアドプロシージャ

私は過去にこの質問に取り組みました

2
RolandoMySQLDBA