개발 공부

SQL - DCL (GRANT / REVOKE ) 본문

DataBase/ORACLE_SQL

SQL - DCL (GRANT / REVOKE )

규율 위에 자유 2023. 7. 14. 16:20

<DCL> - DATA CONTROL LANGUAGE

 

    데이터 제어 언어
    
    일반사용자에게 시스템 권한 및 객체 접근 권한 부여(GRANT) 및 회수(REVOKE)하는 구문


    1 시스템 권한 : DB에 접근하는 권한, 객체들을 생성할 수 있는 권한 

 

    시스템권한 종류

    -CREATE SESSION : 접속할 수 있는 권한
    -CERATE TABLE : 테이블을 생성할 수 있는 권한
    -CREATE VIEW : 뷰를 생성할 수 있는 권한 
    -CREATE SEQUENCE : 시퀀스를 생성할 수 있는 권한 
    .....: 일부는 CONNECT 안에 포함되어 있다.

 

TEST)

1) 유저생성만 진행 했을 경우  (권한 미 부여) 접속이 불가능하다.

 

 

2) 해결방안 접속 권한만 부여 하기 

GRANT CREATE SESSION TO TESTDCL;

 

3)접속 권한만 부여했기 떄문에 각각의 권한(테이블 ,뷰 , 시퀀스)을 부여해 주어야한다.

>각각의 권한을 따로 부여해도 상관없지만 보통은 정해진 룰 (권한의 집합)에 의해 권한을 부여한다.

사전정의된 롤 표   > 새로운 롤 등록도 가능하다

 

CONNECT : 접속할 수 있는권한 CREATE SESSION
RESOURCE : 특정 객체들을 생성할 수 있는 권한 CREATE TABLE , CREATE SEQUENCE...

 롤 종류  롤에 부여된 권한
 CONNECT  ALTER SESSION
 CREATE DATABASE LINK
 CREATE CLUSTER
 CREATE SEQUENCE
 CREATE SESSION
 CREATE SYNONYM
 CREATE TABLE
 CREATE VIEW
 RESOURCE  CREATE CLUSTER
 CREATE PROCEDURE
 CREATE SEQUENCE
 CREATE TABLE
 CREATE TRIGGER

 


    2. 객체접근 권한 : 특정 객체들을 조작할 수 있는 권한

 

    특정 객체에 접근해서 조작할 수 있는 권한

 

    [표현식]
    GRANT 권한종류 ON 특정객체 TO 계정

    권한종류    특정객체 
    SELECT  TABLE / VIEW / SEQUENCE
    INSERT  TABLE / VIEW  
    UPDATE  TABLE / VIEW 
    DELETE  TABLE / VIEW 

 

예) GRANT SELECT ON KH.EMPLOYEE TO SAMPLE;

 

TEST)  TESTDCL 계정에서 KH 계정의 테이블을 조회하려고 하는 상황

1) 본인 계정에 대한 접속 권한만 있을 뿐더러 다른 계정의 테이블 조회 권한이 없기 때문에 에러가 발생한다.

2) 해결방안  KH계정에 속한 EMPLOYEE 테이블 권한을 부여해준다.

GRANT SELECT ON KH.EMPLOYEE TO TESTDCL;

 

이후 조회가능하다.

 

 

3. (AUTO )COMMIT/ROLLBACK

DCL/DDL문은 명령어 하나하나가 하나의 트랜젝션으로 실행시 COMMIT(영구 저장 되기) 때문에 
신중하게 사용해야한다.


DML(insert,delete,update) 는 버퍼에서 처리한 DML 명령어가 실제 테이블에 반영되기 위해서 수동으로 commit/rollback을 사용해서 트랜젝션을  처리 해줘야한다.

'DataBase > ORACLE_SQL' 카테고리의 다른 글

SQL - 문법(JOIN)  (0) 2023.07.14
SQL - TCL(COMMIT,ROLLBACK)  (0) 2023.07.14
SQL -DML(DELETE)  (0) 2023.07.11
SQL -DML(UPDATE)  (0) 2023.07.11
SQL - DML (INSERT)  (0) 2023.07.05