으나님의 잡다한 개발상식
(SQL) DCL(DATA CONTROL LANGUAGE) 본문
1. GRANT
사용자에게 권한을 부여하는 구문
GRANT PRIVILEGES ON 테이블명 TO 사용자;
1) PRIVILEGES(권한)
- GRANT SELECT ON 테이블명 TO 사용자 : 지정된 테이블에 SELECT 권한 부여
- GRANT INSERT ON 테이블명 TO 사용자 : 지정된 테이블에 INSERT 권한 부여
- GRANT UPDATE ON 테이블명 TO 사용자 : 지정된 테이블에 UPDATE 권한 부여
- GRANT DELETE ON 테이블명 TO 사용자 : 지정된 테이블에 DELETE 권한 부여
- GRANT REFERENCES ON 테이블명 TO 사용자 : 지정된 테이블을 참조하는 제약조건을 생성하는 권한 부여
- GRANT ALTER ON 테이블명 TO 사용자 : 지정된 테이블을 수정할 수 있는 권한 부여
- GRANT INDEX ON 테이블명 TO 사용자 : 지정된 테이블의 인덱스를 생성할 수 있는 권한 부여
- GRANT ALL ON 테이블명 TO 사용자 : 지정된 테이블에 대한 모든 권한 부여
GRANT SELECT, INSERT, UPDATE ON EMP TO USER;
위와 같이 여러 권한을 한 문장으로 부여하는 것도 가능
2) WITH GRANT OPTION
- WITH GRANT OPTION : 특정 사용자에게 권한을 부여할 수 있는 권한 부여. 만약 권한을 A가 B에 부여하고 다시 C에 부여한 후 권한을 취소(REVOKE)하면 모든 권한이 회수됨.
- WITH ADMIN OPTION : 테이블에 대한 모든 권한을 부여. 만약 A가 B에 권한을 부여하고 다시 C에게 부여한 후 권한을 취소(REVOKE)하면 B의 권한만 취소됨.
GRANT SELECT, INSERT, UPDATE ON EMP TO USER WITH GRANT OPTION;
2. REVOKE
사용자에게 부여된 권한 회수
REVOKE PRIVILEGES ON 테이블명 FROM 사용자명 [CASCADE]
- REVOKE 문에 CASCADE를 사용할 경우 사용권한이 취소된 보안 주체에게 권한을 부여받은 다른 사용자들의 권한도 취소된다.
- GRANT OPTION을 지정하여 사용 권한이 부여된 보안 주체의 사용 권한을 취소할 경우 CASCADE를 지정하지 않으면 문이 실패한다.
예시)
/*1. 사용자 LEE가 KIM에게 R 테이블에 관한 SELECT, INSERT, DELETE 권한 부여*/
GRANT SELECT, INSERT, DELETE
ON R TO KIM
WITH GRANT OPTION /*그리고 특정 사용자에게 다시 권한을 부여할 수 있는 권한도 부여*/
/*2. 사용자 KIM이 R테이블에 관한 PARK에게 SELECT, INSERT 권한 부여*/
GRANT SELECT, INSERT
ON R TO PARK
/*3. 사용자 LEE가 R테이블에 관해 KIM이 다른 사용자에게 SELECT 권한을 부여할 수 있었던 권한을 취소*/
REVOKE GRANT OPTION FOR SELECT ON R FROM KIM
/*4. 사용자 LEE가 R테이블에 관해 KIM에게 부여했던 INSERT 권한을 취소*/
REVOKE INSERT ON R FROM KIM CASCADE
/*WITH GRANT OPTION을 통해 부여 받은 사용 권한이 연계되어 취소되면 해당 사용 권한의 GRANT 및 DENY가 모두 취소*/
/*따라서 R테이블에 관해 PARK에게 부여되었던 INSERT 권한도 취소됨*/
'SQL' 카테고리의 다른 글
(SQL) JOIN 종류 (0) | 2020.05.26 |
---|---|
(SQL) SAVEPOINT (0) | 2020.05.25 |
(SQL) WITH 구문 (0) | 2020.05.25 |
(SQL) ROWID (0) | 2020.05.25 |
(SQL) 형변환과 인덱스 (0) | 2020.05.25 |