Practice makes perfect

[DataBase] 데이터 제어어(DCL : Data Control Language) 본문

빅데이터/DataBase

[DataBase] 데이터 제어어(DCL : Data Control Language)

kerpect 2020. 4. 14. 23:01

 

데이터 제어어(DCL : Data Control Language)란? = 사용자(User) 권한(Role) =

 

데이터 베이스에 접속하기 위해서는 계정이 필요합니다. 계정의 권한을 줄 수 있는 계정은 마스터 아이디만 가능합니다. 사용자 계정은 어떻게 하는지, 계정에 접속해서 데이터를 저장할 수 있게 권한을 줄 수 있을지 이러한 것을 가능하게 하는 명령어가 DCL이라고 합니다.

 

1) 계정 생성

 

형태 : create user 유저명 identified by 비밀번호 ;

create user thomas identified by tiger;  -- thomas 유저가 생성 되었습니다. 

 

- 접속 ERROR 가 나오고 있습니다.  접속하려면 접속의 권한도 부여되어야 합니다.

 

 

2) 데이터 베이스 접속 권한 부여 ( 권한의 키워드 : grant )

 

형태 : grant creat session to 유저명;

grant create session to thomas;

 

 

3) 테이블 생성 권한

 

 

- 테이블 생성 권한을 받지 않으면 위의 사진 처럼 ERROR 가 나옵니다.

 

grant create table to thomas; 

 

 

- 유저에 얼마나 저장공간을 부여해야 합니다.

 

4) 테이블 스페이스 확인 (할당 키워드 : quota)

: 테이블 스페이스(table space)는 디스크 공간을 소비하는 테이블과 뷰 그리고 그 밖의 다른 데이터베이스 객체들이 저장되는 장소 입니다.
-- 오라클 xe 버전의 경우 메모리 영역은 system으로 할당
-- 오라클 full 버전의 경우 메모리 영역은 users으로 할당

alter user thomas quota 2m on system ; -- xe 버전  
alter user thomas quota 2m on users;  -- full 버전 

 

 

 

 

5) with admin option : system 의  속성을 부여받습니다.

: 사용자에게 시스템 권한을 with admin option 과 함께 부여하면 그 사용자는 데이터베이스 관리자가 아닌데도 불구하고 부여 받은 시스템 권한을 다른 사용자에게 부여할 수 있는 권한도 함께 부여 받게 됩니다.

 

* 계정 생성 및 권한 부여
 create user tester3 identified by tiger; -- 유저 생성
 grant create session to tester3 with admin option; -- 접속의 권한 부여
 grant create table to tester3; -- 테이블 생성 권한 부여
 alter user tester3 quota 2m on system; -- 저장 공간 확보
 
 -- 다른 계정에게 create session 을 할 수 있는 권한이 생겼다. 

 

6) 테이블 객체에 대한 select  권한 부여 ( scott/emp -> thomas )

grant select on emp to thomas; 
select * from emp; --error

 

- SCOTT에 EMP 필드를 찾아볼 수 있게 권한을 부여했는데 왜? 오류일까요?

 

 

7) 스키마(SCHEMA) : 객체를 소유한 사용자명을 의미 합니다.

 

 select * from scott . emp;  -- 사용자 계정 이름 . 컬럼이름
 select * from emp; 
 -- 대상을 명확하게 밝히지 않으면 어느것을 출력해야 하는지 알지 못하기 때문에 오류거 납니다. 

 

 

8) 사용자에게 부여된 권한 조회

: 어떤 권한을 가지고 있는지 정확하게 알고 싶을 때 사용합니다.

 

-- user_tab_privs_made : 현재 시용자가 다른 사용자에게 부여한 권한 정보를 알려줍니다.

 


-- user_tab_privs_recd : 자신에게 부여된 사용자 권한을 알고 싶을 떄 사용합니다.

 

9) 비밀번호 변경시 ( 계정을 생성하는 것과 동일합니다.)

 

alter user thomas identified by thomas; (pw: tiger -> thomas)

 

10) 객체 권한 제거 

revoke select on emp from thomas; 

 

11) with grant option : 사용자 계정가지고 있는 권한을 받는 것입니다.

 

grant select on emp to tester1 with grant option; 
-- tester1 에게 권한 scott 의 emp 를 select 할 수 있는 권한을 받았습니다. 
-- 그리고 자기가 만든 테이블은 아니지만 다른 계정에게 권한을 부여할 수 있는 권한을 받았습니다. 

 

12) 사용자 계정 제거 

drop user tester3;

 

13) 권한(ROLE) 여러 작업들이 권한 부여로 실행되어져야 합니다.

 

create user tester3 identified by tiger;
grant connect, resource to tester3;  -- 테이블을 만들고 뷰를 만드는 것이 가능해졌다.  

 

connect Role :사용자가 데이터베이스에 접속 가능하도록 하기 위해서 다음과 같이 가장 기본적인 시스템 권한 8가지 묶어 놓은 권한을 말합니다.

 

resource Role :사용자가 객체(테이블, 시퀀스, 뷰)를 생성할 수 있도록 시스템 권한을 묶어 놓은 권한을 말합니다.

 

DBA Role :  사용자들이 소유한 데이터베이스 객체를 관리하고 사용자들이 작성하고 변경하고 제거할 수 있도록 하는 모든 권한을 말합니다.

'빅데이터 > DataBase' 카테고리의 다른 글

[DataBase] 데이터베이스 구축  (0) 2020.04.17
[DataBase] 동의어 (Synonym)  (0) 2020.04.14
[DataBase] 인덱스(Index)  (0) 2020.04.14
[DataBase] 시퀀스(Sequence)  (0) 2020.04.14
[DataBase] 뷰(View)  (0) 2020.04.13