スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス

[目次][索引][前へ][次へ]

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