본문 바로가기

sql

11-3. 데이터 조작 언어(DCL문)

728x90
반응형

DCL

 "데이터 베이스의 권한 관리에 대한 내용"

 

*sQL 종류

1. Query

2. DML

3. DDL

4. DCL ----------> database control language:

                                       grant, revoke

5. TCL

 

 

유저 생성

*내가 가지고 있는 권한이 무엇인지 확인하는 방법

 

select * from session_privs;

 

*유저생성

 

 

문제447.

내가 가지고 있는 권한 중에 create user 권한이

있는지 확인하시오

 

select * from session_privs

where privilege like '%USER%';

 

첨에 소문자 써서 안나왔어 ㅠㅠ흑흑

 

GRANT

권한을 부여해주는 DCL 문이다.

 

문제448.

smith 라는 유저를 생성하는데

패스워드를 oracle 이라고 해서

생성하시오~~

scott 권한도 주시오.

 

create user smith

identified by oracle;

 

connect scott/tiger;

 

grant connect to smit;

***scott 권한을 부여할 있는게

아까 조회해보니까 202개나 권한이 있었음ㅋ

 

connect smith/oracle;

 

show user;

 

******패스워드 대소문자 주의~~

 

 

문제449.

smith 유저에서 아래의 테이블을 생성하시오

테이블명: emp05

컬럼명: empno

             ename

             sal

 

create table emp05

(empno number(10), ename varchar2(20), sal number(10) );

 

에러뜹니다.

왜냐하면 테이블 만들 권한을 안드렸거든요

 

 

문제450.

smith 유저에게

create table 권한을 부여하시오!

 

scott 으로 컨넥 한다음

grant create table to smith;

 

퀴즈!

테이블 생성 가능할까?

 

 

 

 

문제451.

smith 유저에게 권한 주고

테이블 생성하라고 시키면 될까?

 

테이블명: emp05

컬럼명: empno

             ename

             sal

 

create table emp05

(empno number(10), ename varchar2(20), sal number(10) );

 

여전히 권한이 없다고 뜹니다.

집을 지을 있는 권한은 있으나

땅이 없는 상태입니다.

 

create table emp05

(empno number(10), ename varchar2(20), sal number(10) );

 

 

 

문제452.

scott 유저로 접속해서

smith 유저에게

오라클 데이터베이스의 땅을 자유롭게 이용할 있는 권한을 주시오.

 

grant unlimited tablespace to smith

 

 

create table emp05

(empno number(10), ename varchar2(20), sal number(10) );

 

 

 

문제453.

scott 유저로 접속해서 smith 유저에게

scott 유저의 emp 테이블을 select 있는

권한을 주시오.

 

connect scott/tiger;

 

grant select on emp to smith;

 

connect smith/oracle

 

select * from emp;

하면 안되고

select * from scott.emp;

 

근데 일일이 scott.emp 하면

너무 귀찮다

 

 

문제454.

 scott 유저에서

smith 유저가 scott.emp 테이블을 조회하지 않도록

emp 라는 synonym public 으로 생성하시오

 

connect scott/tiger;

 

create public synonym emp

 for scott.emp;

 

*public 주면 모든 유저가 조회할 있다는

권한입니다.

 

connect smith/oracle;

 

select * from emp;

 

 

 

문제455.

smith 유저에게

emp2 테이블을

조회할 있는 권한을 주시오

 

connect scott/tiger;

 

*이미

grant unlimited tablespace to smith;

이건 줬으니 생략*

 

grant select on emp2 to smith;

 

create public synonym emp2

for scott.emp2;

 

connect smith/oracle;

 

select * from emp2;

 

 

 

문제456.

아래와 같은 상황을 만드시오

allen king 만들고

allen king 에게 connect 있는

권한을 부여 하고

아래와 같이 도스창 3개를 여시오

 

 

scott ---------> allen ----------> king

 

create user allen

identified by oracle;

 

create user king

identified by oracle;

 

grant connect to allen;

 

grant connect to king;

 

 

 

문제457.

scott allen 에게 emp 테이블을 select 있는 권한을 부여하시오

 

grant select on emp to allen;

 

 

-WITH GRANT OPTION

문제458.

allen king 에게

scott emp 테이블을 select 있는 권한을

부여하시오

 

connect allen/oracle;

 

grant select on emp to king;

 

권한 없다고 나옴 ㅎㅎ안됨

 

 

scott ---------> allen ----------> king

 

grant select on emp to allen with grant option;

1. emp 테이블을 select 있는 권한

2. emp 테이블을 select 있는 권한을

                       남에게 있는 권한

 

스캇으로 들어가서

withn grant option 알렌에게 주고,

알렌으로 컨넥해서

킹에게 grant select on emp to king

하면 가능합니다.

 

 

REVOKE

GRANT 줬던 권한을 뺏는 DCL 문이다.

 

문제459.

위와 같은 상황에서

scott 다시 allen 에게 주었던

emp 테이블을 select 있는 권한을

뺏으면

킹은 어떻게 될까요?

 

revoke select on emp from allen with grant option;

 

그리고 킹에서 select * from emp;

하면 같이 뺏긴다

(부여자 알렌이 뺏기니까

부여받은 킹도 뺏김)

 

설명: king 유저도 같이 권한이 뺏긴다.

 

 

 

DCL

1. 유저생성 create/identified by

2. 권한부여 grant

3. 권한취소 revoke

4. 권한의 집합인 롤을 부여

5. 패스워드 변경

 

 

-ROLE

권한의 집합인 롤을 부여

1. 어제 유저생성하고 권한 부여했던 방법

create user jack

 identified by tiger;

 

grant connect to jack;

              

      (role): 역할에 맞는 권한들의 집합

 

grant create table to jack;

 > 이렇게 하면,

  인덱스 생성할 있는 권한까지 포함된다.

  (보통은 이렇게 )

 

grant create view to jack;

 

2. 오늘 유저생성하고 권한 부여하는 방법

create user jack2

 identified by tiger;

 

grant connect, recource to jack2;

                         

           (role) -> 여러 권한들의 집합

 

 

 

role 안에 resorce, connect, dba...등등 여러가지

           

 

 

문제467.

resource 라는 role 가지고 있는 권한이 무엇인지

확인하시오

 

select *

from role_sys_privs

where role = 'RESOURCE';

 **RESOURCE 대문자

 

 

view 생성 권한이 없는 있다.

 

 

 

문제468.

connect 라는 role 에는 어떠한 권한이 있는지 확인하시오.

 

select *

from role_sys_privs

where role = 'CONNECT';

마찬가지로 connect 대문자로 CONNECT

 

 

 

문제469.

dba 라는 role 에는 들어있는 권한이

몇개인지 확인하시오

 select count(*)

 from role_sys_privs

 where role = 'DBA';

 

 

 

 

 

패스워드 변경

*오라클 데이터 베이스에 유저들이 누가누가 있는지

확인하시오

select * from dba_users;

 

*smith 패스워드를 tiger 변경하시오

 

alter user smith

 identified by tiger;

 

connect smith/tiger

 

*변경한 패스워드를 확인하는 방법은?

 

select * from dba_users;

null 나옴. 패스워드 확인할 방법 없음.

 

 

*유저 삭제

권한 가진 scott 으로 커넥

drop user smith cascade;

 

설명: 유저를 삭제하면 해당 유저가 가지고 있는

모든 객체들이 삭제가 된다.

 

 

문제470.

king, allen 유저를 삭제하시오

 

drop user king cascded;

 

drop user allen cascade;

 

 

 

 

문제471.

jones 라는 유저를 만들고

scott emp 테이블을

select, insert, update, delete 있는

권한을 부여하시오!

 

connect scott/tiger

 

create user jones

identified by tiger;

 

grant connect, resource to jones;

 

grant select, insert, update, delete on emp

      to jones;

 또는

grant all on emp to jones;

 

 

 

문제472.

jones 가지고 있는

시스템 권한들이 무엇인지 확인하시오.

 

■권한

시스템권한: 객체를 만들 있는 권한

객체권한 확인: 특정 데이터를 접근/조회할 있는 권한

1. 시스템 권한 확인(객체를 만들 있는 권한)

select * from session_privs;

뭔가 만들 있는 권한

 

 

2. 객체 권한 확인 (*이게 중요함)

(특정 데이터를 엑세스(접근/조회) 있는 권한)

select *

from user_tab_privs;

priviliege 컬럼을 보면서 어떤 권한이 있는지 알고 있어야 한다.

 

 

728x90
반응형

'sql' 카테고리의 다른 글

12. 제약  (0) 2019.03.31
11-4. 데이터 조작 언어(계층형 질의문)  (0) 2019.03.31
11-2. 데이터 조작 언어(DDL문)  (0) 2019.03.30
11-1. 데이터 조작 언어(TCL문)  (0) 2019.03.30
11. 데이터 조작 언어(DML문)  (0) 2019.03.30