GRANT構文(SQL形式) - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ制御言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
ft:locale
ja-JP
ft:lastEdition
2021-09-23
dita:mapPath
ja-JP/sqd1591723147563.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1149
Product Category
Software
Teradata Vantage
GRANT {
  { ALL [ PRIVILEGES ] |
    [ ALL BUT ] privilege [,...] |
    CTCONTROL
  } ON object |

  map_privilege [,...] |
  
  role_privilege [,...] |
  
  profile_privilege [,...] |
  
  zone_privilege [,...] |
  
  CONSTRAINT ASSIGNMENT |
  
  CONSTRAINT DEFINITION
}
  TO {
       { grantee [,...] | PUBLIC } [ WITH GRANT OPTION ] |
       role_name [,...]
     } [;]
object
{ { database_name | user_name } [ .object_name ] |

    object_name |

    [ PROCEDURE ] [ database_name. | user_name. ] procedure_name |

    SPECIFIC FUNCTION [ database_name. | user_name. ]
      specific_function_name |

    [ FUNCTION ] [ database_name. | user_name. ]
      function_name ( [ function_parameter [,...] ] ) |

    TYPE [SYSUDTLIB.] UDT_name
}
grantee
[ ALL ] { database_name | user_name }
function_parameter
[ parameter_name ] data_type
data_type
{ INTEGER | SMALLINT | BIGINT | BYTEINT | DATE |

  { TIME | TIMESTAMP } [ (fractional_seconds_precision) ] [WITH TIME ZONE] |

  INTERVAL YEAR [(precision)] [TO MONTH] |

  INTERVAL MONTH [(precision)] |

  INTERVAL DAY [(precision)]
    [TO { HOUR | MINUTE | SECOND [(fractional_seconds_precision)] }] |

  INTERVAL HOUR [(precision)]
    [TO { MINUTE | SECOND [(fractional_seconds_precision)] }] |

  INTERVAL MINUTE [(precision)] [TO SECOND [(fractional_seconds_precision)]] |

  INTERVAL SECOND [ (precision [, fractional_seconds_precision ] ) |

  PERIOD (DATE) |

  PERIOD ( { TIME | TIMESTAMP } [(precision)] [WITH TIME ZONE] ) |

  REAL |

  DOUBLE PRECISION |

  FLOAT [ (integer) ] |

  NUMBER [ ( { integer | * } [, integer]... ) ] |

  { DECIMAL | NUMERIC } [ ( integer [, integer]... ) ] |

  { CHAR | BYTE | GRAPHIC } [ (integer) ] |

  { VARCHAR | CHAR VARYING | VARBYTE | VARGRAPHIC } [ (integer) ] |

  LONG VARCHAR |

  LONG VARGRAPHIC |

  { BINARY LARGE OBJECT | BLOB | CHARACTER LARGE OBJECT | CLOB }
    ( integer [ G | K | M ] ) |

  [SYSUDTLIB.] { XML | XMLTYPE } [ ( integer [ G | K | M ] ) ]
    [ INLINE LENGTH integer ] |

  [SYSUDTLIB.] JSON [ ( integer [ K | M ] ) ] [ INLINE LENGTH integer ]
    [ CHARACTER SET { UNICODE | LATIN } | STORAGE FORMAT { BSON | UBJSON } ] |

  [SYSUDTLIB.] ST_GEOMETRY [ (integer [ K | M ]) ] [ INLINE LENGTH integer ] |

  [SYSUDTLIB.] DATASET [ (integer [ K | M ]) ]
    [ INLINE LENGTH integer ] [storage_format] |

  [SYSUDTLIB.] { UDT_name | MBR | ARRAY_name | VARRAY_name }
}

構文要素

ALL PRIVILEGES
ユーザーまたはデータベースが、指定されたオブジェクトに対して付与可能なすべての権限を受け取ります。GRANT ALLの場合は、そのタイプのオブジェクトに関してWITH GRANT OPTION付きの付与者が所有するすべての暗黙および明示オブジェクト権限だけが指定のデータベース オブジェクトに関して付与されます。
他のユーザーまたはデータベースへのGRANTオブジェクト権限に対する指定したユーザーの能力を含めるには、WITH GRANT OPTION句を指定します。
ALLをロールに付与することはできません。
付与者が、オブジェクトに対するWITH GRANT OPTION権限を持っていない場合には、エラーが返されます。
モニター権限を与えるには、モニター形式のGRANT文を使用する必要があります。
GRANT (MONITOR形式)を参照してください。
privilege
権限ディクショナリのトピックにリストされている権限のいずれか、または権限組み合わせ用のキーワードのいずれか。
組み合わせ権限キーワードのリストについては、単一のキーワードによる複数権限の付与を参照してください。
INSERT、REFERENCES、SELECT、およびUPDATEの各権限には、テーブル レベルのオプションと列レベルのオプションがあります。
REFERENCES権限を参照してください。
DELETE権限はDELETE DML文だけに適用され、DELETE USERまたはDELETE DATABASEには適用されません(これらは、それぞれDROP USERおよびDROP DATABASEによって権限が与えられます)。
権限キーワードのルールも参照してください。
特定の文に必要な権限の詳細については、SQLマニュアル一式の該当する巻で「必要な権限」の節を参照してください。
ALL BUT privilege
ユーザーは、権限リストで指定されたオブジェクトを除くすべての指定されたオブジェクトに対して付与可能なすべての権限を受け取ります。ALLの場合と同様に、付与者がWITH GRANT OPTIONを所有しているオブジェクト権限だけが与えられます。
ALL BUTは、ANSI/ISO SQL:2011規格のTeradata拡張機能です。
データベースまたはユーザーへの権限の付与は、ANSI/ISO SQL:2011規格に対するTeradataの拡張機能です。
database_name
user_name
権限のセットが付与されるデータベースまたはユーザーの名前。
指定されたデータベースまたはユーザーの領域に格納されているすべてのオブジェクトに、指定された権限のセットが付与されます。
database_name.object_name
user_name.object_name
指定されたデータベース オブジェクトを直接所有しているデータベースまたはユーザーの名前と、権限のセットが付与されるデータベース オブジェクト(テーブル、ビュー、プロシージャ、またはマクロ)の名前。指定された権限のセットは、指定されたデータベース オブジェクトにのみ付与されます。
権限が与えられるオブジェクト(テーブル、ビュー、プロシージャ、またはマクロ)を直接所有しているデータベースまたはユーザーの名前と、そのオブジェクト名。指定したオブジェクトだけに有効です。
object_name
権限のセットが付与されるデータベース オブジェクト(テーブル、結合インデックス、ハッシュ インデックス、ビュー、プロシージャ、UDF、UDM、UDT、マクロ、または許可名)の名前。
権限オプションの形式に一連の列名が含まれている場合は、object_nameでテーブルまたはビューのどちらかを指定する必要があります。
Vantageはオブジェクト名を検証する前にデータベース名と一致するかどうかを検証するので、権限を与える際には常にオブジェクト名を修飾する必要があります。
  • オブジェクト名が修飾されておらず、同じ名前を持つデータベースがシステムにより見つかった場合、Vantageはその名前がデータベース名であるとみなします。
  • オブジェクト名が修飾されておらず、同じ名前を持つデータベースが見つからなかった場合、Vantageはオブジェクトが現在のデフォルト データベース内にあるとみなします。
  • オブジェクト名がデータベース名またはユーザー名で修飾されておらず、実行するユーザーの現在のデータベースと受領者のデータベースに、その同じ名前を持つオブジェクトがある場合には、そのオブジェクトは、実行するユーザーの現在のデータベース内にあると想定されます。唯一の例外は、UDT関連のUDFおよびメソッドを含む、UDTに関係するすべてのオブジェクトの場合です。これらはすべてSYSUDTLIBデータベースに含まれていなければなりません。
  • 修飾されていないオブジェクト名が現在のデータベースのオブジェクトの名前でもあり、現在のデータベース内または受領者のデータベース内のテーブルの名前でもある場合には、現在のデータベースのオブジェクトであるとみなされます。
  • 指定された名前を持つデータベースとオブジェクトのいずれも見つからなかった場合、システムはそのリクエストをアボートしてリクエスト元にエラーを返します。
PROCEDURE
database_name
user_name
procedure_name
オブジェクトはプロシージャです。
付与される権限にPROCEDUREキーワードが含まれている場合、PROCEDUREは任意です。
<プロシージャ固有の権限の使用上の注意>を参照してください。
database_nameuser_nameは任意です。procedure_nameは、それを格納しているdatabase_nameまたはuser_nameで修飾できます。
PROCEDUREを指定する場合は、次の権限を付与できます。
  • EXECUTEを指定すると、EXECUTE PROCEDURE権限が付与されます。
  • DROPを指定すると、DROP PROCEDURE権限が付与されます。
ALTER EXTERNAL PROCEDURE権限およびCREATE EXTERNAL PROCEDURE権限を明示的に付与する必要があります。
SPECIFIC FUNCTION
database_name
user_name
specific_function_name
権限セットを付与する関数の名前。
オーバーロード関数に対する権限を付与する場合は、SPECIFIC FUNCTIONキーワードを指定する必要があります。
database_nameuser_nameは任意です。specific_function_nameは、それを格納しているdatabase_nameまたはuser_nameで修飾できます。
FUNCTION
database_name
user_name
function_name
権限セットを付与するUDFの名前。
付与される権限にFUNCTIONキーワードが含まれている場合、FUNCTIONは任意です。
UDFに関する権限を呼出し名によって付与する場合は、FUNCTIONキーワードを指定する必要があります。
database_nameuser_nameは任意です。必要に応じて、function_nameは、それを格納しているdatabase_nameまたはuser_nameで修飾できます。
parameter_name
data_type
UDFに渡す変数についての、括弧に入れたカンマ区切りのデータ型と任意選択のパラメータ名のリスト。同じ名前のオーバーロード関数を区別するためにデータ型が必要です。
BLOB型とCLOB型は、ロケーターで表わす必要があります。ロケーターの説明については、<Teradata Vantage™ - SQLデータ操作言語、B035-1146>でUSINGリクエスト修飾子に関する情報を参照してください。Vantageではメモリ内LOBパラメータはサポートされません。LOBパラメータおよび戻り値ごとに、AS LOCATOR句を指定する必要があります。
関数に渡すパラメータがない場合でも、開き括弧と閉じ括弧を指定する必要があります。
parameter_nameは任意です。パラメータ名を1つでも指定した場合には、関数に渡されるすべてのパラメータ名を指定する必要があります。<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>のHELP FUNCTIONに関する情報を参照してください。
各パラメータに関連したデータ型は、パラメータまたは戻り値の型です。すべてのTeradataのデータ型は有効です。文字データは、CHARACTER SET句も指定できます。
TYPE SYSUDTLIB.
UDT_name
権限セットを付与するUDTの名前。
SYSUDTLIBは任意です。UDT_nameを含むデータベースを指定する場合、SYSUDTLIBを指定する必要があります。
以下のリストに、UDTに付与できるTYPE権限を示します。
  • UDTMETHODはSYSUDTLIBデータベースに対してのみ付与できます。
  • UDTTYPEはSYSUDTLIBデータベースに対してのみ付与できます。
  • UDTUSAGEは、SUSUDTLIBデータベースまたはTYPE、あるいはその両方に対して付与できます。
map_privilege
ユーザーおよびロールに対してCREATE MAPおよびDROP MAP権限を付与します。
次の権限を指定できます。
  • CREATE MAP
  • DROP MAP
  • MAP
MAPは短縮表現で、単独の権限ではありません。CREATE MAPおよびDROP MAPの両方の権限を付与するには、MAPを指定します。
role_privilege
以下のロール権限うちの1つです。
  • CREATE ROLE
  • DROP ROLE
  • ROLE
以下のリクエストは、ユーザーFranklinがロールの作成および削除を行なえるようにします。
     GRANT ROLE
     TO Franklin;
この形式には、ON句がありません。ロール権限にON句を指定すると、システムはエラーを返します。
ROLEは短縮表現で、単独の権限ではありません。 CREATE ROLEおよびDROP ROLEの両方の権限を付与するには、ROLEを指定します。
ロール権限は、ロールまたはPUBLICに対して付与できません。
profile_privilege
以下の権限のうちの1つです。
  • CREATE PROFILE
  • DROP PROFILE
  • PROFILE

    PROFILEは短縮表現で、単独の権限ではありません。CREATE PROFILEおよびDROP PROFILE両方の権限を付与するには、PROFILEを指定します。

プロファイル権限は、ユーザーのセットまたはロールに対してのみ付与できます。オブジェクトに付与することはできない。
プロファイルに行レベル セキュリティ権限を割り当てて、その後、そのプロファイルにディレクトリ ユーザーをマップできます。そのディレクトリ ユーザーが永久ユーザーにマップされていなくても、そのユーザーに制約が適用されます。詳細は、<Teradata Vantage™ - Advanced SQL Engineセキュリティ管理ガイド、B035-1100>を参照してください。
zone_privilege
以下の権限のうちの1つです。
  • CREATE ZONE
  • DROP ZONE
  • ZONE
ZONEは短縮表現で、単独の権限ではありません。CREATE ZONEおよびDROP ZONEの両方の権限を付与するには、ZONEを指定します。
ゾーン権限は、ロールに対して付与できません。
<Teradata Vantage™ - Advanced SQL Engineセキュリティ管理ガイド、B035-1100>を参照してください。
database_name
user_name
role_name
PUBLIC
明示的に与えられた権限が付与されるデータベース、ユーザー、ロールの名前、またはPUBLIC。このデータベースまたはユーザーの領域に格納されているすべてのオブジェクトが対象になります。
行レベル セキュリティ権限をPUBLICに付与することはできません。
database_name
user_name
権限が与えられるデータベースまたはユーザーの名前。このデータベースまたはユーザー領域内のすべてのオブジェクトが対象になります。
database_name.object_name
user_name.object_name
直接所有しているデータベースの名前と、任意指定でオブジェクト名、またはユーザー名と、権限が与えられるオブジェクト(テーブル、ビュー、プロシージャ、またはマクロ)の名前。指定したオブジェクトだけに有効です。
CONSTRAINT ASSIGNMENT
システム レベルのCONSTRAINT ASSIGNMENT権限。
CONSTRAINT ASSIGNMENTは、ユーザーが、ユーザー、プロファイル、および表への行レベル セキュリティ制約オブジェクト割り当てを維持できるようにします(ALTER TABLE、CREATE PROFILE、CREATE TABLE、CREATE USER、MODIFY PROFILE、MODIFY USERなど)。
CONSTRAINT ASSIGNMENTは、特定のユーザーまたはロールにのみ付与できます。テーブルやデータベースには付与できません。
CONSTRAINT ASSIGNMENTをPUBLICに付与することはできません。
SLES 11 EDW システムがありTeradata Database 16.0以降を使用している場合、flexスロットルが適用されるように指定できます。 詳細については、<行レベル セキュリティのためのシステム レベル権限>を参照してください。
CONSTRAINT DEFINITION
システム レベルのCONSTRAINT DEFINITION権限。
CONSTRAINT DEFINITIONは、ユーザーが、行レベル セキュリティ制約を作成して維持できるようにします(ALTER CONSTRAINT、CREATE CONSTRAINT、DROP CONSTRAINTなど)。
CONSTRAINT DEFINITIONは、特定のユーザーまたはロールにのみ付与できます。テーブルやデータベースには付与できません。
CONSTRAINT DEFINITIONをPUBLICに付与することはできません。
SLES 11 EDW システムがありTeradata Database 16.0以降を使用している場合、flexスロットルが適用されるように指定できます。 詳細については、<行レベル セキュリティのためのシステム レベル権限>を参照してください。
CTCONTROL
システム レベルのCTCONTROL権限。
CTCONTROLでは、GRANT CONNECTまたはREVOKE CONNECT文を使用して、ユーザーがCONNECT THROUGH権限(GRANT CONNECT THROUGHを参照)を付与したり、または取り消したりすることを許可します。
ON句でCTCONTROLを付与できるのはユーザーのみです。データベース オブジェクトの他のタイプには付与できません。
CTCONTROLをPUBLICに付与することはできません。
CTCONTROL権限はシステム内のすべてのデータベース オブジェクトに適用されるため、この権限の付与には十分な注意が必要です。
CTCONTROL権限を参照してください。
ALL
user_name
database_name
受領者を識別するデータベースまたはユーザーの名前。user_nameは、すでにシステム内に定義済みのユーザーの識別子でなければなりません。
GRANTリクエストにつき最大25個の名前を指定できます。
ALLは任意指定です。ALLを指定すると、そのオブジェクト権限が、指定したデータベースまたはユーザー、およびそのデータベースまたはユーザーによって現在と将来に所有されるすべてのデータベースまたはユーザーに与えられます。
ALL user_nameは、ANSI/ISO SQL:2011規格に対するTeradataの拡張機能です。
次の文で、personnelデータベースに作成される現在および将来のすべてのユーザーは、departmentテーブルからデータを選択できるようになります。
GRANT SELECT
ON personnel.department
TO ALL personnel;
PUBLIC
権限は、既存および今後のすべてのVantageユーザーおよびデータベースに継承されます。

例えば、次のようになります。

GRANT SELECT
ON personnel.department
TO PUBLIC;
WITH GRANT OPTION
権限を与えられるユーザーが、WITH GRANT OPTIONとともに付与された権限を受け取ります。
このオプションは、付与された側がロールかまたはゾーン内のゾーン ゲストである場合、それらのロールやゾーン ゲストには適用されません。
付与される側のリスト内にロールまたはゾーン ゲストが存在する場合に、GRANT文にWITH GRANT OPTION権限を指定すると、アボートしてエラー メッセージが返されます。
WITH GRANT OPTIONは、指定された権限だけに対して適用されます。
この例では、ユーザーGeorgeは、自分自身のユーザー領域に対して持つすべての権限をユーザーMarstonに与えることができますが、以下の制限があります。
  • Georgeはユーザー レベルでWITH GRANT OPTIONがある権限のみを付与できる。
  • GeorgeはMarstonに付与する権限に対するWITH GRANT OPTION権限を持っていなければならない。
    GRANT ALL
    ON marston
    TO marston
    WITH GRANT OPTION;
database_name
user_name
role_nameの格納先データベースまたはユーザー(現在のデータベースまたはユーザー以外の場合)。
role_name
既存のロールの名前。VantageロールまたはEXTERNALロールを指定できます。
行レベル セキュリティ制約値をロールに割り当てることはできません。これらはユーザーやプロファイルにのみ割当て可能です。
これらの権限は、データベース、ユーザーおよびロールに付与できます。例外として、USER権限をロールに付与することはできません。
  • CREATE DATABASE
  • CREATE FUNCTION
  • CREATE MACRO
  • CREATE TABLE
  • CREATE VIEW
  • CREATE PROCEDURE
  • CREATE USER (ロールには付与できない)
  • DROP DATABASE
  • DROP USER (ロールには付与できない)