개발자 항해

데이터 제어어(DCL)- 유저생성,권한부여 및 회수 본문

DB/Oracle

데이터 제어어(DCL)- 유저생성,권한부여 및 회수

리치Y 2022. 8. 25. 12:36

1. User 생성

- create user 권한 소유자가 DB에 User를 생성할 수 있다.

 

 

 sys로 사용자를 바꾸고 create로 ID : demo, PASS:demo로 user를 만듦.

 

 

 

 

방금 만든 demo로 접속을 해본다.

 

에러가 뜬다. 왜냐하면 demo는 아무런 권한이 없기 때문.

접속할수 있는 권한 조차 없다.

 

 

 

 

 

 

2. 권한 유형

- System 권한 : DB를 조작할 수 있는 권한 

-Object 권한 : Object를 조작할 수 있는 권한 

 

1) System 권한

 (1) System 권한 부여(소유자 : DBA)

  (create session - DB에 session 을 만들수 있는 권한을 DBA가 부여함.

   create user - DB에 session 을 만들수 있는 권한을 DBA가 부여함.

   create table - DB에 table을 만들수 있는 권한을 DBA가 부여함.

   create view, create sequence 등등....)

 

하지만 create index는 없다. create table에 index권한도 포함되어 있음.

 

 

 

 

 

 (2)  Object 권한 (소유자: Object)

 

 HR.employees -> select, insert, update, delete

(HR소유의 employees테이블에  select, insert, update, delete등을 할수 있는 권한을 HR이 부여할수있음 )

 

 

grant구문으로 session과 table 권한을 부여하였다.

 

 

demo로 접속해보면 접속성공. 

 

 

 

DEMO가 table 만들수 있는지 확인해보니 성공.

 

 

 

vu도 생성해보았다. 당연히 실패.

권한을 얻지 못했으므로 생성 불가능하다.

 

 

 

 

(3) 권한 회수

 

 

다시 sys로 접속하여 demo의 table권한을 회수하였다.

 

 

demo사용자로 table을 생성해보면 

권한을 회수 당해서 생성 불가

 

 

 

아래 구문은 

demo사용자가 hr사용자 소유의 employees테이블을 select 해오는 구문이다.

 

 

 

 

실행 해보면 테이블이 없다고 뜬다.

실제로는 hr사용자 소유의 employees테이블이 있지만 안뜨는 이유는

demo사용자가 권한이 없기 때문이다.

그래서 hr 사용자로 접속해서 grant구문을 이용하여 demo에게 employees테이블 select, update 권한을

주면 아래와 같이 select 해올수 있다.

 

 

 

hr이 demo의 employees 테이블에 대한 update권한을 회수하였다. 

 

 

 

demo로 접속해서 update구문을 날려보면 권한이 없다고 뜬다.

 

'DB > Oracle' 카테고리의 다른 글

Top-N분석  (0) 2022.09.01
Data Dictionary - 사용자 관리  (0) 2022.08.30
데이터 역모델링  (0) 2022.08.19
조건부 표현식  (0) 2022.08.19
Data Dictionary 사용  (0) 2022.08.18