데이터 제어어(DCL)의 유형에는
GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT(=CHECKPOINT)가 있다.
그런데 위와 같이 분류한 이유는
COMMIT, ROLLBACK, SAVEPOINT(=CHECKPOINT)가
DCL(데이터 제어어)라고 불리기도 하지만
TCL(트랜잭션 제어어)로 불리기도 하기 때문이다.
세 가지 명령어의 특성을 좀 더 잘 보여주는 말이
TCL(트랜잭션 제어어) 이라 생각해서 위와 같이 분류했다.
TCL(트랜잭션 제어어)에 대한 설명은 아래 글을 참고하면 된다.
2024.02.02 - [DB/SQL - Oracle] - [SQL] TCL(트랜잭션 제어어) - commit, rollback, checkpoint(=savepoint)
이번에는 DCL에 해당하는 GRANT, REVOKE에 대해 공부해보고자 한다.
GRANT : 권한 부여
GRANT 명령어는 데이터베이스 관리자(DBA)가
사용자에게 데이터베이스에 대한 권한을 부여하는 명령어이다.
명령어는 다음과 같이 사용할 수 있다.
권한 | 구문 | 설명 |
시스템 권한 | GRANT 권한 TO 사용자; | 관리자가 사용자에게 테이블/뷰/프로시저 등을 생성하고 삭제할 수 있는 권한을 부여 |
객체 권한 | GRANT 권한 ON 테이블명 TO 사용자; | 관리자가 사용자에게 테이블을 수정, 삽입, 삭제, 조회하고 프로시저를 실행할 수 있는 권한을 부여 |
GRANT 구문 마지막에 WITH GRANT OPTION 키워드를 붙이면
권한이 필요할 경우 '다른 사용자에게 권한을 부여할 수 있는 권한'을
부여할 수 있다.
(말이 복잡하지만, 권한을 부여하는 것 역시 하나의 권한이기 때문에
해당 권한도 모두가 가져서는 안되므로 이런 경우가 생길 수도 있다.)
//관리자가 사용자인 '홍길동'에게 member테이블에 대해
//수정(UPDATE)할 수 있는 권한을 부여
GRANT UPDATE ON member TO 홍길동;
//관리자가 사용자 '홍길동'에게 member테이블에 대해
//조회(SELECT)할 수 있는 권한과 그 권한을 다른 사용자에게
//부여할 수 있는 권한을 부여
GRANT SELECT ON member TO 홍길동 WITH GRANT OPTION;
*** 사용자명 앞뒤에 작은 따옴표를 쓰지 않는다.
REVOKE : 권한 회수
GRANT 명령어와 반대로,
REVOKE 명령어는 데이터베이스 관리자(DBA)가
사용자에게 부여했던 권한을 회수하기 위한 명령어이다.
명령어는 다음과 같이 사용된다.
권한 | 구문 | 설명 |
시스템 권한 | REVOKE 권한 FROM 사용자; | 관리자가 사용자에게 테이블/뷰/프로시저 등을 생성하고 삭제할 수 있는 권한을 회수 |
객체 권한 | REVOKE 권한 ON 테이블명 FROM 사용자; | 관리자가 사용자에게 테이블을 수정, 삽입, 삭제, 조회하고 프로시저를 실행할 수 있는 권한을 회수 |
REVOKE 구문에 CASCADE CONSTRAINTS 키워드를 붙이면
WITH GRANT OPTION 으로 부여된 사용자들의 권한까지 회수할 수 있다.
//관리자가 사용자인 '홍길동'에게 member테이블에 대해
//수정(UPDATE)할 수 있는 권한을 회수
REVOKE UPDATE ON member FROM 홍길동;
//관리자가 사용자 '홍길동'에게 member테이블에 대해
//조회(SELECT)할 수 있는 권한과 WITH GRANT OPTION으로
//부여된 사용자들의 권한까지 회수
REVOKE SELECT ON member FROM 홍길동 CASCADE CONSTRAINT;
'DB > SQL - Oracle' 카테고리의 다른 글
[SQL] DML(데이터 조작어) - select *group by, having* 그룹화 (0) | 2024.02.16 |
---|---|
[SQL] 뷰(VIEW)의 생성과 삭제 그리고 장단점 (0) | 2024.02.15 |
[SQL] 인덱스(INDEX)의 장점과 단점, 활용 방법 (0) | 2024.02.14 |
[SQL] 인덱스(INDEX)의 종류와 생성, 변경, 삭제, 조회 방법 (0) | 2024.02.13 |
[SQL] 연산자 - 수식, 문자, 논리, 집합 연산자 (0) | 2024.02.09 |