Oracleの特定のユーザーに選択権限を付与したい。次のクエリでmysqlで可能
GRANT SELECT, INSERT, DELETE ON database TO username@'localhost' IDENTIFIED
BY 'password';
Oracleでこれを実現する方法はありますか?
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
。
はい、GRANTステートメントを使用しています: OracleドキュメントのGRANT
まず、CREATEUSERを使用してユーザーを作成する必要があります。