ユーザーの権限には、直接付与されたシステム権限やオブジェクト権限のほか、ロールを付与した後にそのロールから取得する権限も含まれます。ほとんどの操作に必要な権限は、直接付与されたものであっても、ロールを通じて間接的に持つものであっても、条件を満たすことができます。本記事では、ユーザーに直接権限を付与する方法について説明します。
以下のシナリオでは、直接権限が必要です:
- ビュー作成時に、ビュー内のオブジェクトにアクセスするために必要な権限。
- 定義者権限を持つ名前付きPLブロック内のステートメントを実行するために必要な権限。
前提条件
オブジェクト権限を付与する場合、現在のユーザーはオブジェクトの所有者であるか、付与される権限を持っている必要があります(例えば、
test1がテーブルt1のSELECT権限をtest2に付与する場合、test1はテーブルt1のSELECT権限を持っている必要があります)。また、GRANT OPTION権限、またはGRANT ANY OBJECT PRIVILEGE権限を持っている必要があります。システム権限またはロールを付与する場合、現在のユーザーは付与される権限またはロールを持っている必要があり、
GRANT OPTION権限、またはGRANT ANY PRIVILEGE権限またはGRANT ANY ROLE権限を持っている必要があります。
現在持っている権限を確認する操作については、ユーザー権限の確認を参照してください。必要な権限がない場合は、管理者に連絡し追加してもらってください。現在持っているロールを確認する操作については、ロールの確認を参照してください。
注意事項
権限付与操作を行う際には、以下の点に注意してください:
複数の権限を同時にユーザーに付与する場合、権限タイプを半角カンマ(,)で区切ります。
ユーザーに権限が付与された後、その権限が有効になるには、ユーザーがOceanBaseデータベースに再接続する必要があります。
操作例
システム権限の付与
システム権限
CREATE SEQUENCEをユーザーtestに付与します。obclient> GRANT CREATE SEQUENCE TO test;オブジェクト権限の付与
ビュー
emp_viewのSELECT、UPDATE権限をユーザーtestに付与します。obclient> GRANT SELECT, UPDATE ON emp_view TO test;
GRANTステートメントの詳細については、GRANTを参照してください。