-1

Oracleの特定のユーザーに選択権限を付与したい。次のクエリでmysqlで可能

GRANT SELECT, INSERT, DELETE ON database TO username@'localhost' IDENTIFIED      
BY 'password';

Oracleでこれを実現する方法はありますか?

4

2 に答える 2

2

MySQLが「データベース」と呼ぶものは、Oracleが「スキーマ」と呼ぶものに似ています。Oracleには、スキーマ内のすべてのオブジェクトに対する権限を特定のユーザーに付与する機能はありません。各オブジェクトに対する権限を個別に付与する必要があります。少し動的なSQLを使用して、最初の付与を簡素化できます

BEGIN
  FOR x IN (SELECT *
              FROM dba_tables
             WHERE owner = <<name of schema>>)
  LOOP
    EXECUTE IMMEDIATE 'GRANT select, insert, delete ON ' || 
                         x.owner || '.' || x.table_name ||
                         ' TO <<username>>';
  END LOOP;
END;

ただし、スキーマに新しいオブジェクトを作成するたびに、新しいオブジェクトに対する同じ権限をユーザーに付与するか、上記のPL/SQLブロックを再実行する必要があります。本当に必要な場合は、DDLトリガーは、新しいオブジェクトが作成されたときに特権を自動的に付与するジョブを送信できますが、これは特に推奨されません。

管理性の観点からは、通常、これらすべての特権が割り当てられるロールを作成してから、実際にこれらのDML特権を必要とするユーザーのセットにそのロールを割り当てますnこれにより、ユーザーのオブジェクトに対する特権を管理するのではなく、同じ特権のセットを必要とする組織内のすべての人に同じ役割を簡単に割り当てることができますm

于 2012-08-29T13:56:18.243 に答える
0

はい、GRANTステートメントを使用しています: OracleドキュメントのGRANT

まず、CREATEUSERを使用してユーザーを作成する必要があります。

于 2012-08-29T13:49:41.110 に答える