DB/SQL - Oracle

[SQL] DCL(데이터 제어어) - grant, revoke

생각많은 프로그래머 2024. 2. 15. 16:46
SQL 종류
1. 데이터를 정의하는 쿼리 - DDL(데이터 정의어) : create, drop, alter, truncate 
2. 데이터를 조작하는 쿼리 - DML(데이터 조작어) : insert, select, update, delete
3. 데이터를 제어하는 쿼리 - DCL(데이터 제어어) : grant, revoke
4. 트랜잭션 제어하는 쿼리 - TCL(트랜잭션 제어어) : commit, rollback, checkpoint 

 

데이터 제어어(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)

 

[SQL] TCL(트랜잭션 제어어) - commit, rollback, checkpoint(=savepoint)

SQL 종류 1. 데이터를 정의하는 쿼리 - DDL(데이터 정의어) : create, drop, alter, truncate 2. 데이터를 조작하는 쿼리 - DML(데이터 조작어) : insert, select, update, delete 3. 데이터를 제어하는 쿼리 - DCL(데이터

bio-logisch.tistory.com

 

 

이번에는 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;