본문 바로가기

자린고비 독학하기/자린고비 코딩하기

SQL - DCL

반응형

 

DCL: Data Control Language

  • 권한을 부여하고 삭제하는 명령 
    • GRANT
    • REVOKE 

 

권한의 설정 (GRANT)

  • 최소한의 권한을 주는 것이 원칙
    • 시스템 권한 - 관리자 계정에 부여되며, 사용자나 객체 등을 생성/제거, DB에 접근할 수 있는 권한
    • 객체 권한 - 객체에 대한 조작 권한 (소유자나 관리자 계정으로 부여 가능)

 

 

시스템 권한

  • 데이터베이스를 관리하는 권한으로, 객체 수정, 삭제 등이 있다.
  • GRANT 명령어로 해당 권한을 부여할 수 있다.

 

  • 데이터베이스 사용자 생성 / 권한 부여

 

labuser라는 계정을 생성만 하고 해당 계정에 연결하면 권한이 없다는 경고가 출력된다.

 

 

해당 계정에 대해 어떤 권한을 부여해 줘야만 해당 계정으로 접속할 수 있다.

 

 

 

  • WITH GRANT OPTION: 부여받은 권한에 대해 다른 사용자에게 권한을 부여할 수 있는 권한까지 가지게 됨

 

 

system 유저는 타 유저에게 모든 권한을 부여할 수 있다. CREATE SESSION 권한을 받은 labuser01은 with admin option을 통해 타 유저에게 해당 권한을 부여할 수 있게 되었다. 

 

 

labuser01이 labuser에게 CREATE SESSION 권한을 부여해 주었다. 그러나 WITH GRANT OPTION이 없었으므로 labuser에게 해당 권한을 줄 권한은 없다.

 

시스템 유저는 DBA 권한을 부여할 수도 있다.

 

 

객체 권한 

  • 객체 안의 데이터를 선택하고 변경하는 등의 DML 작업에 대해 부여할 수 있는 권한이다.
  • ALTER, UPDATE, SELECT 등의 권한을 부여할 수 있다.

 

EMP 객체는 SCOTT 유저의 것이고, LABUSER에는 해당 객체가 존재하지 않는다.

 

 

SCOTT 유저가 소유한 EMP 테이블에 대한 권한을 LAB 유저에게 부여하였다. 해당 테이블은 SCOTT 유저의 테이블이기 때문에 불러오기 위해서는 계정 이름을 테이블 이름 앞에 붙여 주어야 한다.

 

 

권한 확인

 

  • 준 권한: SELECT * FROM USER_TAB_PRIVS_MADE;
  • 받은 권한: SELECT * FROM USER_TAB_PRIVS_RECD;

 

 

 

권한 확인 쿼리를 통해 scott 유저가 lapuser 유저에게 emp 테이블에 대한 select 권한을 줬다는 것을 알 수 있다.

 

 

 

권한 확인 쿼리를 통해 scott 유저가 lapuser 유저에게 emp 테이블에 대한 select 권한을 줬다는 것을 알 수 있다.

 

 

 

 

 

REVOKE 

  • 사용자에게 부여한 권한을 회수하는 명령어 

 

반응형

'자린고비 독학하기 > 자린고비 코딩하기' 카테고리의 다른 글

JAVA - 클래스 변수, 인스턴스 변수, 지역 변수  (0) 2019.08.09
JAVA - equals과 ==의 차이  (1) 2019.08.09
SQL - 시퀀스 (SEQUENCE)  (1) 2019.08.05
SQL - INDEX  (1) 2019.08.05
SQL - 뷰 (VIEW)  (0) 2019.08.05