ユーザーの権限には、直接付与されたシステム権限やオブジェクト権限に加えて、ロールを付与した後にそのロールから取得する権限も含まれます。ほとんどの操作に必要な権限は、直接付与されたものであっても、ロールを通じて間接的に持つものであっても、条件を満たすことができます。
以下のシナリオでは、直接権限が必要です:
- ビューを作成する際、ビュー内のオブジェクトにアクセスするために必要な権限。
- 定義者権限を持つ有名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を参照してください。