자격증/SQLD

[SQLD] SQL 활용 - DCL(Data Control Language)

숭코기 2023. 8. 31. 22:22
728x90

01. 데이터 제어어: DCL(Data Control Language)

테이블 사용자 권한 부여 명령어

 

명령어 설명
GRANT 권한부여
REVOKE 권한회수
GRANT 권한 ON 테이블명 TO 유저명;
REVOKE 권한 ON 테이블명 TO 유저명;
권한 설명
ALL 모든 권한 부여
SELECT SELECT 권한 부여
INSERT INSERT 권한 부여
UPDATE UPDATE 권한 부여
DELETE DELETE 권한 부여
REFERENCES 참조 권한 부여
ALTER ALERT 권한 부여
INDEX 인덱스 생성 권한 부여
GRANT SELECT, INSERT ON 음식점 TO TOM;

-- TOM 유저에게 음식점 테이블에 대한 SELECT, INSERT 권한을 부여

 

02. WITH GRANT OPTION

WITH GRANT OPTION

  • 자신이 부여받은 권한에 대해서 다른 계정의 사용자에게 권한을 부여할 수 없습니다.
  • 권한을 회수할 경우 연쇄적으로 권한이 회수됩니다.
A → B → C
A가 B에게 권한을 부여하고 B가 C에게 권한을 부여했다면
A가 B에게 권한을 회수하면 C도 자동으로 회수된다.
// 01.DBA 계정으로 USER01 사용자에게 CREATE TABLE 권한을 부여합니다
GRANT CREATE TABLE TO USER01 WITH GRANT OPTION;

// 02. 이후 USER01 계정으로 USER02 사용자에게 CREATE TABLE 권한을 부여합니다
GRANT CREATE TABLE TO USER02;

// 03. 이후 USER01에게 주었던 CREATE TABLE 권한을 회수합니다.
REVOKE CREATE TABLE FROM USER01;

-- USER01이 USER02에게 부여한 CREAT TABLE 권한이 같이 회수됩니다.

 

 

WITH ADMIN OPTION

  • 시스템 권한을 가진 계정인 DBA 권한으로만 부여가 가능합니다.
  • 자신이 부여받은 권한에 대해서 다른 계정의 사용자에게 권한을 부여할 수 있습니다.
  • 권한 회수 시 회수한 유저의 권한만 회수됩니다.
A → B → C
A가 B에게 권한을 부여하고 B가 C에게 권한을 부여했다면
A가 B에게 권한을 회수해도 C는 권한이 취소되지 않는다.
// 01.DBA 계정으로 USER01 사용자에게 CREATE TABLE 권한을 부여합니다
GRANT CREATE TABLE TO USER01 WITH ADMIN OPTION;

// 02. 이후 USER01 계정으로 USER02 사용자에게 CREATE TABLE 권한을 부여합니다
GRANT CREATE TABLE TO USER02;

// 03. 이후 USER01에게 주었던 CREATE TABLE 권한을 회수합니다.
REVOKE CREATE TABLE FROM USER01;

-- USER01이 USER02에게 부여한 CREAT TABLE 권한은 회수되지 않고 남아있습니다.
728x90