GRANT 形式1(権限定義

機能

ユーザにDBA権限,スキーマ定義権限,CONNECT権限,私用RDエリアの利用権限,及びアクセス権限を与えます。

Sun Java System Directory Server連携機能使用時はロールにアクセス権限を与えます。

(1)GRANT DBADBA権限定義),GRANT SCHEMAスキーマ定義権限定義),GRANT CONNECTCONNECT権限定義),GRANT RDAREARDエリア利用権限定義

GRANT DBA(DBA権限定義),GRANT SCHEMA(スキーマ定義権限定義),GRANT CONNECT(CONNECT権限定義),GRANT RDAREA(RDエリア利用権限定義)について説明します。

使用権限

DBA権限を持つユーザ
DBA権限,スキーマ定義権限,CONNECT権限,及び私用RDエリアの利用権限を与えます。
CONNECT権限を持つユーザ
パスワードを変更できます。

形式

 GRANT{DBA   TO 認可識別子〔,認可識別子〕…
       〔IDENTIFIED BY パスワード〔,パスワード〕…〕
     |SCHEMA  TO 認可識別子〔,認可識別子〕…
     |CONNECT TO 認可識別子〔,認可識別子〕…
       〔IDENTIFIED BY パスワード〔,パスワード〕…〕
     |RDAREA RDエリア名〔,RDエリア名〕…
       TO{認可識別子〔,認可識別子〕…| PUBLIC }}

オペランド

DBA TO
ユーザにDBA権限を与える場合に指定します。
認可識別子〔,認可識別子〕…
DBA権限を与えるユーザの認可識別子を指定します。
IDENTIFIED BY パスワード〔,パスワード〕…
DBA権限を与えるユーザのパスワードを指定します。
IDENTIFIED BY句とユーザの権限の関係を次の表に示します。

表3-44 GRANT DBA文のIDENTIFIED BY句とユーザの権限の関係

ユーザの権限GRANT DBA文のIDENTIFIED BY
指定あり指定なし
既にCONNECT権限ありパスワードありDBA権限を与えて,指定されたパスワードに変更DBA権限を与える
パスワードなしDBA権限を与えて,指定されたパスワードに変更KFPA11571エラー
CONNECT権限なしCONNECT権限,DBA権限,及び指定されたパスワードを与えるKFPA11571エラー
SCHEMA TO
ユーザにスキーマ定義権限を与える場合に指定します。
認可識別子〔,認可識別子〕…
スキーマ定義権限を与える場合,ユーザの認可識別子を指定します。
CONNECT TO
ユーザにCONNECT権限を与える場合に指定します。
認可識別子〔,認可識別子〕…
CONNECT権限を与えるユーザの認可識別子を指定します。
IDENTIFIED BY パスワード〔,パスワード〕…
CONNECT権限を与えるユーザのパスワードを指定します。
IDENTIFIED BY句とユーザの権限の関係を次の表に示します。

表3-45 GRANT CONNECT文のIDENTIFIED BY句とユーザの権限の関係

ユーザの権限パスワード文字制限定義GRANT CONNECT文のIDENTIFIED BY句
指定あり指定なし
既にCONNECT権限ありパスワードありDBA権限あり指定されたパスワードに変更KFPA11571-Eエラー
DBA権限なしなし指定されたパスワードに変更パスワードなしに変更
あり指定されたパスワードに変更KFPA19634-Eエラー
パスワードなしDBA権限なしなし指定されたパスワードに変更パスワードなしに変更
あり指定されたパスワードに変更KFPA19634-Eエラー
CONNECT権限なしなしCONNECT権限とパスワードを与えるパスワードなしでCONNECT権限だけを与える
ありCONNECT権限とパスワードを与えるKFPA19634-Eエラー

(凡例) -:該当しません。

RDAREA RDエリア名〔,RDエリア名〕
ユーザに利用権限を与えるRDエリアの名称を指定します。
認可識別子〔,認可識別子〕…
利用権限を与えるユーザの認可識別子を指定します。
PUBLIC
指定したRDエリアを公用RDエリアにする場合に指定します。

共通規則

  1. GRANT RDAREAでレプリカRDエリアに利用権限は与えられません。
  2. インナレプリカ機能を使用している場合のGRANTの実行条件については,マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 8」を参照してください。
  3. パスワード文字制限強化機能を使用している場合,GRANT DBA文,及びGRANT CONNECT文実行時にパスワード文字制限のチェックを行います。

留意事項

  1. このSQL文中に,最大16個の私用RDエリアと,最大1,600個の認可識別子が指定できます。
  2. DBA権限,又はCONNECT権限のないユーザには,スキーマ定義権限を与えられません。
  3. PUBLIC指定のRDエリア利用権限のあるRDエリアに対して,個別のユーザへRDエリア利用権限を与えられません。また,個別のユーザに権限を与えたRDエリアは,PUBLICを指定して公用RDエリアとして定義できません。
  4. DBA権限を与えると,CONNECT権限も与えられます。
  5. DBA権限を与えるユーザには,パスワードを指定してください。なお,DBA権限が与えられていても,パスワードのないユーザはDBA権限を使用できません。
  6. 自分自身にGRANT CONNECTを指定すると,パスワードの変更ができます。この場合,GRANT実行者はCONNECT権限だけでパスワードの変更ができます。
  7. GRANTは,OLTP下のX/Openに従ったUAPから指定できません。
  8. GRANT DBA文とGRANT CONNECT文で,複数の認可識別子を指定し,同時に複数のユーザに権限を与える場合,IDENTIFIED BY句で指定するパスワードは一部だけの省略はできません。パスワードは指定した認可識別子の数だけ指定するか,又はIDENTIFIED BY句全体を省略してください。ただし,GRANT CONNECT文ではIDENTIFIED BY句全体を省略した場合,パスワードのないDBAを登録するような指定があるとエラーとなり(表3-44表3-45を参照),GRANT文全体が無効になります。この場合,エラーとなるユーザを別のGRANT文でIDENTIFIED BY句を指定して実行してください。
  9. パスワード文字制限機能使用時にGRANT DBA文とGRANT CONNECT文で,複数の認可識別子を指定し,同時に複数のユーザに権限を与える場合,一人でもパスワード文字制限に違反する指定をした場合,エラーとなり(表3-44表3-45を参照)GRANT文全体が無効となります。
  10. パスワード無効アカウントロック状態のユーザにはGRANT DBA文でDBA権限の付与,又はパスワードの変更はできません。GRANT CONNECT文でパスワード無効アカウントロック状態を解除後,GRANT DBA文を実行してください。
  11. 監査人には,DBA権限は与えられません。
  12. RDエリア利用権限が監査人にだけ与えられているRDエリアに対して,他ユーザのRDエリア利用権限は与えられません。

ディレクトリサーバ連携機能を使用する場合の留意事項

ディレクトリサーバ連携機能を使用すると,ユーザのCONNECT権限はディレクトリサーバで管理され,HiRDBでは管理しません。CONNECT権限以外の権限情報についてはHiRDBで管理します。ディレクトリサーバ連携機能については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。

  1. CONNECT権限は,GRANTでは与えられません。ディレクトリサーバにパスワード属性を指定してユーザを登録すると,CONNECT権限が与えられます。
  2. DBA権限は,ディレクトリサーバに登録されていないユーザには与えられません。また,ロールに対しても与えられません。
  3. DBA権限を与える場合のIDENTIFIED BY句には,ディレクトリサーバに登録したパスワードを指定してください。また,パスワードは省略しないでください。GRANT DBAのIDENTIFIED BY句とディレクトリサーバのユーザの権限の関係を次の表に示します。

    表3-46 GRANT DBAのIDENTIFIED BY句とディレクトリサーバのユーザの権限の関係

    ディレクトリサーバのユーザの権限GRANT DBAのIDENTIFIED BY句
    指定あり指定なし
    ディレクトリサーバにユーザを登録済みDBA権限を与えて,指定されたパスワードをHiRDBに登録DBA権限を与えて,パスワードなしでHiRDBに登録
    ディレクトリサーバにユーザを登録していない(CONNECT権限なし)KFPA11559-EエラーKFPA11559-Eエラー

    注※ パスワード属性のないユーザの場合,CONNECT権限なしとなります。


  4. DBA権限を与えても,ディレクトリサーバに登録している情報に対して影響はありません。
  5. スキーマ定義権限は,ディレクトリサーバに登録されていないユーザに与えられません。また,ロールに対しても与えられません。
  6. 何も権限を持たないユーザにスキーマ定義権限を与えた場合,スキーマ定義権限は与えられるが,パスワードなしでHiRDBに登録されます。
  7. RDエリア利用権限は,ディレクトリサーバに登録していないユーザに対しても与えられます。ただし,ロールに対しては与えられません。

ディレクトリサーバ連携機能を未使用に変更する場合の留意事項

  1. ディレクトリサーバ連携機能を未使用にすると,ユーザのCONNECT権限はHiRDBで管理され,ディレクトリサーバでは管理しません。
  2. ディレクトリサーバ連携機能を未使用に変更後,パスワードなしのDBA権限保持者が存在する場合,パスワードなしのDBA権限保持者はDBA権限を行使できません。パスワードなしのDBA権限保持者がDBA権限を行使しようとするとKFPA11552-Eエラーとなります。パスワードなしのDBA権限保持者を登録しないようにするためディレクトリサーバ連携機能使用時に,DBA権限保持者のパスワードはディレクトリサーバに登録されているパスワードを設定してください。

使用例

  1. ユーザ(認可識別子:USER1)にDBA権限を与えます。このとき,パスワードは,PSWDとします。

     GRANT DBA TO USER1 IDENTIFIED BY PSWD

  2. ユーザ(認可識別子:USER2)にスキーマ定義権限を与えます。

     GRANT SCHEMA TO USER2

  3. ユーザ(認可識別子:USER3)にCONNECT権限を与えます。このとき,パスワードは,PSWDとします。

     GRANT CONNECT TO USER3
         IDENTIFIED BY PSWD

  4. ユーザ(認可識別子:USER3)のパスワードをABCDに変更します。

     GRANT CONNECT TO USER3
         IDENTIFIED BY ABCD

  5. ユーザ(認可識別子:USER4~6)にRDエリア(RDA1,RDA2)の利用権限を与えます。

     GRANT RDAREA RDA1,RDA2
         TO USER4,USER5,USER6

  6. RDエリア(RDA3)を公用RDエリアとして定義します。

     GRANT RDAREA RDA3 TO PUBLIC

(2)GRANT アクセス権限アクセス権限定義

GRANT アクセス権限(アクセス権限定義)について説明します。

使用権限

表の所有者
自分が所有する実表,外部表,及び自分の実表,ビュー表,外部表から定義した自分の所有するビュー表に対して,自分が持つアクセス権限をほかのユーザに与えられます。ただし,他人が所有する表に対するSELECT権限を受け取って,ビュー表を定義すると,以降このビュー表に対して自分が持つアクセス権限を,ほかのユーザに与えることはできません。
ディレクトリサーバ連携機能使用時は,ディレクトリサーバに登録されているユーザ又はロールに対してアクセス権限を与えられます。

形式

 GRANT{アクセス権限〔,アクセス権限〕…|ALL〔PRIVILEGES〕}
   ON〔認可識別子.〕表識別子
   TO{認可識別子〔,認可識別子〕…|PUBLIC
     |GROUP ロール名〔,ロール名〕…}

 アクセス権限::={SELECT|INSERT|DELETE|UPDATE}

オペランド

アクセス権限
認可するアクセス権限を指定します。なお,同じアクセス権限は指定できません。
ALL〔PRIVILEGES〕
指定した表に対して,アクセス権限で指定できるすべてのアクセス権限を与える場合,指定します。
ビュー表に対して指定した場合,ビュー表所有者の持つアクセス権限をすべて与えます。
SELECT
SELECT権限を与える場合に指定します。
INSERT
INSERT権限を与える場合に指定します。
DELETE
DELETE権限を与える場合に指定します。
UPDATE
UPDATE権限を与える場合に指定します。
認可識別子
アクセス権限を与える表の所有者の認可識別子を指定します。
パブリックビューのアクセス権限を与える場合は,認可識別子に,PUBLICを指定してください。
表識別子
アクセス権限を与える表の名前を指定します。
認可識別子
アクセス権限を与えるユーザの認可識別子を指定します。ユーザの認可識別子は,最大1,600個指定できます。ただし,同じ認可識別子は指定できません。
PUBLIC
指定したアクセス権限を,すべてのユーザに与える場合に指定します。
ディレクトリサーバ連携機能使用時は,すべてのロールに対してアクセス権限が与えられます。
GROUP ロール名
アクセス権限を与えるロール名を指定します。ロール名はSun Java System Directory Serverで管理する情報の一つです。
ロール名についての規則を次に示します。
  1. ロール名は,最大1,600個指定できます。
  2. 同じロール名は指定できません。
  3. ロール名は,ディレクトリサーバ連携機能を使用するときだけ指定できます。

共通規則

  1. インナレプリカ機能を使用している場合のGRANTの実行条件については,マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 8」を参照してください。

留意事項

  1. GRANTは,OLTP下のX/Openに従ったUAPから指定できません。
  2. ディレクトリサーバ連携機能使用時は,ディレクトリサーバに登録していないユーザ及びロールに権限を与えることもできます。ただし,表にアクセスする場合は,ディレクトリサーバにユーザが登録されていなければなりません。また,ロールに与えられた権限を使用して,ビュー表を作成できません。
  3. ユーザに権限を与える場合,ユーザと同じ名称のロール名に対して既に権限が与えられているときは,そのユーザに権限を与えないでください。また,ロールに権限を与える場合,ロールと同じ名称のユーザIDに対して既に権限が与えられているときは,そのロールに権限を与えないでください。
  4. 監査人以外のユーザに監査証跡表又は監査証跡表を基表としたビュー表のINSERT,UPDATE,DELETE権限を与えることはできません。

使用例

  1. ユーザ(認可識別子:USER1)に在庫表(ZAIKO)を検索する権限(SELECT権限)を与えます。

     GRANT SELECT
         ON ZAIKO TO USER1

  2. すべてのユーザに対して,在庫表(ZAIKO)をアクセスするすべての権限を与えます。

     GRANT ALL
         ON ZAIKO TO PUBLIC

  3. ロール(ロール名:SOUMU)に在庫表(ZAIKO)を更新する権限(UPDATE権限)を与えます。

     GRANT UPDATE
         ON ZAIKO TO GROUP SOUMU