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