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