ユーザーの権限には、直接付与されたシステム権限やオブジェクト権限のほか、ロールを付与された後、そのロールを通じて取得した権限も含まれます。ほとんどの操作に必要な権限は、直接付与されたものであれ、ロールを通じて間接的に持っているものであれ、どちらでも条件を満たすことができます。
以下のシナリオでは、直接権限が必要です:
- ビュー作成時に、ビュー内のオブジェクトにアクセスするために必要な権限。
- 定義者権限を持つ名前付きPLブロック内のステートメントを実行するために必要な権限。
ロールを通じて間接的に権限を取得する
前提条件
ロールにシステム権限、オブジェクト権限、またはロールを付与する際、現在のユーザーは付与される権限またはロールを持っている必要があり、GRANT OPTION 権限を持っているか、GRANT ANY OBJECT PRIVILEGE 権限、GRANT ANY PRIVILEGE 権限、または GRANT ANY ROLE 権限を持っている必要があります。これにより、権限の付与が成功します。
現在持っている権限を確認する操作については、ユーザー権限の確認を参照してください。該当する権限がない場合は、管理者に連絡し、追加してもらってください。ユーザーに権限を追加する関連操作については、直接権限の付与を参照してください。現在のユーザーが持っているロールを確認する操作については、ロールの確認を参照してください。
操作例
テーブル test1.tbl1 の SELECT オブジェクト権限をロール role1 に付与します。
obclient> GRANT SELECT ON test1.tbl1 TO role1;
Query OK, 0 rows affected
さらに、PUBLIC ロールに権限を追加することもできます。SQLステートメントは以下のとおりです:
注意
データベースのセキュリティ上の理由から、OceanBaseデータベースでは、業務ニーズに応じて適切に権限を付与することを推奨します。このロールを無計画にユーザーに付与しないでください。
obclient> GRANT [privilege_list] TO PUBLIC;
権限を追加すると、システムはその権限をテナント内のすべてのユーザーの権限領域に追加します。すべてのユーザーは、その権限によって許可された操作を即座に実行できます。PUBLIC ロールの詳細については、ロール管理の概要を参照してください。
GRANT ステートメントの詳細については、GRANTを参照してください。