GRANT(테이블 또는 보기 권한)

이 양식의 GRANT 명령문은 테이블이나 보기에 대한 권한을 부여합니다.

호출

이 명령문은 애플리케이션 프로그램에 삽입하거나 대화식으로 발행할 수 있습니다. 동적으로 준비될 수 있는 실행문입니다.

권한부여

명령문의 권한부여 ID에서 보유되는 권한은 다음 중 하나 이상을 포함해야 합니다.

  • 명령문에서 식별된 각 테이블 또는 보기의 경우
    • 명령문에 지정된 모든 권한
    • 테이블 또는 보기에 대한 *OBJMGT의 시스템 권한
    • 테이블 또는 보기를 포함하는 라이브러리의 시스템 권한 *EXECUTE
  • 데이터베이스 관리자 권한
  • 보안 관리자 권한

WITH GRANT OPTION이 지정되면, 명령문의 권한부여 ID에서 보유하는 권한은 다음 중 하나 이상을 포함해야 합니다.

  • 테이블의 소유권
  • 데이터베이스 관리자 권한
  • 보안 관리자 권한

구문

구문 도표 읽기시각적 구문 도표 생략
                 .-PRIVILEGES-.                               
>>-GRANT--+-ALL--+------------+---------------------------+----->
          | .-,-----------------------------------------. |   
          | V                                           | |   
          '---+-ALTER---------------------------------+-+-'   
              +-DELETE--------------------------------+       
              +-INDEX---------------------------------+       
              +-INSERT--------------------------------+       
              +-REFERENCES--+-----------------------+-+       
              |             |    .-,-----------.    | |       
              |             |    V             |    | |       
              |             '-(----column-name-+--)-' |       
              +-SELECT--------------------------------+       
              '-UPDATE--+-----------------------+-----'       
                        |    .-,-----------.    |             
                        |    V             |    |             
                        '-(----column-name-+--)-'             

                  .-,--------------.   
       .-TABLE-.  V                |   
>--ON--+-------+----+-table-name-+-+---------------------------->
                    '-view-name--'     

       .-,---------------------------------.                          
       V                                   |                          
>--TO----+-+-------+--authorization-name-+-+--+-------------------+-><
         | +-USER--+                     |    '-WITH GRANT OPTION-'   
         | '-GROUP-'                     |                            
         '-PUBLIC------------------------'                            

설명

ALL or ALL PRIVILEGES
하나 이상의 권한을 부여합니다. 부여된 권한은 명령문의 권한부여 ID가 지정된 패키지에 있는 부여 가능한 모든 권한입니다.

테이블이나 보기에 대해 부여된 ALL PRIVILEGES는 *ALL의 시스템 권한부여와 동일하지 않습니다.

ALTER
지정 테이블을 변경하거나 지정 테이블에 트리거를 작성하거나 삭제하기 위한 권한을 부여합니다. 테이블과 보기에서 COMMENT 및 LABEL 명령문을 사용하기 위한 권한을 부여합니다.
DELETE
지정 테이블이나 보기로부터 행을 삭제하기 위한 권한을 부여합니다. 보기가 지정되면 삭제할 수 있는 보기여야 합니다.
INDEX
지정 테이블에 대한 색인을 작성하도록 권한을 부여합니다. 이 권한은 보기에 부여할 수 없습니다.
INSERT
지정된 테이블이나 보기로 행을 삽입하기 위한 권한을 부여합니다. 보기가 지정되면 삽입할 수 있는 보기여야 합니다.
REFERENCES
지정된 각 테이블이 상위인 참조 제한조건을 추가하도록 권한을 부여합니다. 열 리스트가 지정되지 않거나 REFERENCES가 ALL PRIVILEGES의 스펙을 통해 테이블이나 보기의 모든 열에 권한부여되는 경우, ALTER TABLE문을 통해 나중에 추가되더라도 피부여자는 ON 절에서 상위 키로 지정된 각 테이블의 모든 열을 사용하여 참조 제한조건을 추가할 수 있습니다. 이 권한은 보기에 부여될 수 있지만 권한이 보기를 위해 사용되지 않습니다.
REFERENCES (column-name,…)
열 리스트에서 지정된 열을 상위 키로만 사용하여 지정된 각 테이블이 상위인 참조 제한조건을 추가하도록 권한을 부여합니다. 각 column-name은 ON 절에 지정된 각 테이블의 열을 식별하는 규정되지 않은 이름이어야 합니다. 이 권한은 보기의 열에 부여될 수 있지만, 권한이 보기를 위해 사용되지 않습니다.
SELECT
지정된 테이블이나 보기에서 보기를 작성하거나 데이터를 읽도록 권한을 부여합니다. 예를 들면, 테이블이나 보기가 쿼리에 지정되면 SELECT 권한은 필수입니다.
UPDATE
지정된 테이블이나 보기에서 행을 갱신하도록 권한을 부여합니다. 열 리스트가 지정되지 않거나 UPDATE가 ALL PRIVILEGES의 스펙을 통해 테이블이나 보기의 모든 열에 권한부여되는 경우, ALTER TABLE문을 통해 나중에 추가되더라도 피부여자는 ON 절에서 지정된 각 테이블의 갱신 가능한 모든 열을 갱신할 수 있습니다. 보기가 지정되면 갱신할 수 있는 보기여야 합니다.
UPDATE (column-name,…)
열 리스트에서 식별되는 열만 갱신하도록 UPDATE문을 사용하는 권한을 부여합니다. 각 column-name은 ON 절에 지정된 각 테이블과 보기의 열을 식별하는 규정되지 않은 이름이어야 합니다. 보기가 지정되면 갱신할 수 있는 보기여야 하며 지정된 열이 갱신할 수 있는 열이어야 합니다.
ON table-name 또는 view-name,…
권한이 부여되는 테이블이나 보기를 식별합니다. table-name 또는 view-name은 현재 서버에 있는 테이블이나 보기를 식별해야 하지만 선언된 임시 테이블을 선언하지 않아야 합니다.
TO
권한이 부여되는 사용자를 표시합니다.
USER
authorization-name은 사용자 프로파일을 식별함을 지정합니다. USER가 지정되면, authorization-name은 그룹 프로파일일 수 없습니다.
GROUP
authorization-name은 그룹 프로파일을 식별함을 지정합니다. GROUP이 지정되면, authorization-name은 사용자 프로파일일 수 없습니다.
authorization-name,…
하나 이상의 권한부여 ID를 나열합니다.
PUBLIC
사용자 세트에 특권을 부여합니다(권한부여 ID). 자세한 정보는 권한부여, 권한 및 오브젝트 소유권의 내용을 참조하십시오.
WITH GRANT OPTION
지정된 authorization-names이 ON 절에 지정된 테이블과 보기에 대한 권한을 다른 사용자에게 부여하도록 할 수 있습니다.

일부 기타 소스에서 해당 권한을 수신하지 않으면(예를 들어 시스템 권한 *OBJMGT의 부여에서) WITH GRANT OPTION이 생략된 경우 지정된 authorization-names는 ON 절에서 지정된 테이블과 보기에 대한 권한을 부여할 수 없습니다.

해당 시스템 권한: GRANT 및 REVOKE 명령문은 SQL 오브젝트를 위한 시스템 권한을 지정하고 제거합니다. 테이블에 권한을 부여할 때 다음 테이블은 SQL 권한에 해당되는 시스템 권한을 설명합니다. 왼쪽 열은 SQL 권한을 나열합니다. 오른쪽 열은 부여되거나 취소되는 등가 시스템 권한을 나열합니다.

표 1. 테이블에서 부여되거나 취소된 권한
SQL 권한 테이블에서 부여되거나 취소되는 경우 해당 시스템 권한
ALL(명령문의 권한부여 ID가 가지고 있는 권한을 취소하거나 부여된 모든 권한을 부여하거나 취소함)

*OBJALTER 1
*OBJMGT(취소 전용) *OBJOPR
*OBJREF
*ADD
*DLT
*READ
*UPD

ALTER *OBJALTER 2
DELETE

*OBJOPR 3
*DLT

INDEX *OBJALTER 2
INSERT

*OBJOPR3
*ADD

REFERENCES *OBJREF 2
SELECT

*OBJOPR3
*READ

UPDATE

*OBJOPR3
*UPD

WITH GRANT OPTION *OBJMGT

보기에 권한을 부여할 때 다음 테이블은 SQL 권한에 해당되는 시스템 권한을 설명합니다. 왼쪽 열은 SQL 권한을 나열합니다. 중간 열은 보기 자체에 부여되거나 취소되는 등가 시스템 권한을 나열합니다. 보기가 참조되고 모든 테이블과 보기가 해당 정의에서 참조된 경우, 오른쪽 열은 보기의 정의에서 참조된 모든 테이블과 보기에 부여된 시스템 권한을 나열합니다. 4

보기 참조가 둘 이상의 테이블이나 보기를 참조하는 경우, *DLT, *ADD 및 *UPD 시스템 권한은 보기 정의의 fullselect에서 첫 번째 테이블이나 보기에만 부여됩니다. *READ 시스템 권한은 보기 정의에서 참조된 모든 테이블과 보기에 부여됩니다.

둘 이상의 시스템 권한이 SQL 권한으로 부여되고 권한 중 하나를 부여할 수 없는 경우, 경고가 발생하며 해당 권한에 부여된 권한은 없습니다. GRANT와 달리, REVOKE는 보기에 대한 시스템 권한만 취소합니다. 참조된 테이블과 보기에서 취소된 시스템 권한이 없습니다.

표 2. 보기에서 부여되거나 취소된 권한
SQL 권한 보기에 부여되거나 취소된 해당 시스템 권한 참조된 테이블과 보기에 부여되거나 취소된 해당 시스템 권한
ALL(명령문의 권한부여 ID가 가지고 있는 권한을 취소하거나 부여된 모든 권한을 부여하거나 취소함)

*OBJALTER
*OBJMGT(취소 전용) *OBJOPR
*OBJREF
*ADD
*DLT
*READ
*UPD

*ADD
*DLT
*READ
*UPD

ALTER *OBJALTER 2 None
DELETE

*OBJOPR3
*DLT

*DLT
INDEX 해당 안됨 해당 안됨
INSERT

*OBJOPR3
*ADD

*ADD
REFERENCES *OBJREF 2 없음
SELECT

*OBJOPR3
*READ

*READ
UPDATE

*OBJOPR3
*UPD

*UPD
WITH GRANT OPTION *OBJMGT 없음

테이블이나 보기에 대한 권한 점검 시 해당 시스템 권한: 다음 테이블은 테이블에 대한 권한 점검 시 SQL 권한에 해당하는 시스템 권한을 설명합니다. 왼쪽 열은 SQL 권한을 나열합니다. 오른쪽 열은 등가 시스템 권한을 나열합니다.

표 3. 테이블에 대한 권한 점검 시 해당 시스템 권한
SQL 권한 테이블에 대한 권한 점검 시 해당 시스템 권한
ALTER *OBJALTER 또는 *OBJMGT
DELETE

*OBJOPR 및 *DLT

INDEX *OBJALTER 또는 *OBJMGT
INSERT

*OBJOPR 및 *ADD

REFERENCES *OBJREF 또는 *OBJMGT
SELECT

*OBJOPR 및 *READ

UPDATE

*OBJOPR 및 *UPD

보기에 대한 권한 점검 시 다음 테이블은 SQL 권한에 해당되는 시스템 권한을 설명합니다. 왼쪽 열은 SQL 권한을 나열합니다. 중앙 열은 보기 자체에서 점검되는 등가 시스템 권한을 나열합니다. 보기가 참조되고 모든 테이블과 보기가 해당 정의에서 참조된 경우, 오른쪽 열은 보기의 정의에서 참조된 모든 테이블과 보기에서 점검되는 시스템 권한을 나열합니다.

표 4. 보기에 대한 권한 점검 시 해당 시스템 권한
SQL 권한 보기에 대한 해당 시스템 권한 참조된 테이블과 보기에 대한 해당 시스템 권한
ALTER *OBJALTER 및 *OBJMGT 없음
DELETE5

*OBJOPR 및 *DLT

*DLT
INDEX 해당 안됨 해당 안됨
INSERT6

*OBJOPR 및 *ADD

*ADD
REFERENCES *OBJREF 또는 *OBJMGT 없음
SELECT

*OBJOPR 및 *READ

*READ
UPDATE7

*OBJOPR 및 *UPD

*UPD

GRANT 규칙: GRANT 명령문이 명령문의 권한부여 ID가 부여하도록 허용되는 권한만 부여합니다. 부여된 권한이 없는 경우 오류가 리턴됩니다.

예 1: 테이블 WESTERN_CR에 대한 모든 권한을 PUBLIC에 부여합니다.

  GRANT ALL PRIVILEGES ON WESTERN_CR
    TO PUBLIC

예 2: PHIL 및 CLAIRE가 CALENDAR 테이블을 읽고 새 항목을 삽입할 수 있도록 해당 테이블에 대한 적절한 권한을 부여합니다. 기존 항목을 변경하거나 제거하지 못하도록 하십시오.

  GRANT SELECT, INSERT ON CALENDAR
    TO PHIL, CLAIRE

예 3: TABLE1 및 VIEW1에 대한 열 권한을 FRED에게 부여합니다. 이 GRANT 명령문에 지정된 열 모두가 TABLE1과 VIEW1에서 있어야 한다는 점에 주의하십시오.

   GRANT UPDATE(column_1, column_2)
     ON  TABLE1, VIEW1
     TO FRED WITH GRANT OPTION

1 SQL INDEX 및 ALTER 권한은 *OBJALTER의 동일한 시스템 권한에 해당됩니다. INDEX 및 ALTER에 모두 권한을 부여하면 추가 권한을 사용자에게 제공하지 않습니다.
2 WITH GRANT OPTION이 사용자에게 부여되면, 사용자는 ALTER 및 REFERENCES 권한에서 제공된 기능을 수행할 수도 있습니다.
3 *OBJOPR이 아닌 다른 마지막 시스템 권한도 지정된 권한부여 ID나 PUBLIC에 대해 취소되면 *OBJOPR만이 취소됩니다.
4 권한이 부여된 사용자에게 다른 권한 소스로부터의 권한이 없는 경우(예를 들어 공동 권한) 지정된 권한은 보기 정의에 참조된 테이블과 보기에만 부여됩니다.
5 보기가 작성되면 소유자는 보기에 대한 DELETE 권한을 획득하지 않아도 됩니다. 보기가 삭제를 허용하고 소유자가 부속 선택에서 참조된 첫 번째 테이블에 대한 DELETE 권한도 있는 경우, 소유자만이 DELETE 권한을 얻습니다.
6 보기가 작성되면 소유자는 보기에 대한 INSERT 권한을 획득하지 않아도 됩니다. 보기가 삽입을 허용하고 소유자가 부속 선택에서 참조된 첫 번째 테이블에 대한 INSERT 권한도 있는 경우, 소유자만이 INSERT 권한을 얻습니다.
7 보기가 작성되면 소유자는 보기에 대한 UPDATE 권한을 획득하지 않아도 됩니다. 보기가 갱신을 허용하고 소유자가 부속 선택에서 참조된 첫 번째 테이블에 대한 UPDATE 권한도 있는 경우, 소유자만이 UPDATE 권한을 얻습니다.