본문 바로가기

Study/class note

sql / DCL

SQL의 종류 5가지

1. Query : select 문의 6가지절, 조인, 서브쿼리, 집합연산자

2. DML : insert, update, delete, merge

3. DDL : create, alter, drop, truncate, rename

4. DCL : grant, revoke

5. TCL : commit, rollback, savepoint

 

 

ㅇDCL문(Data Control Language)

권한을 부여하거나 취소하는 명령어

grant : 권한부여

revoke : 권한취소

 

데이터를 엑세스(access)하거나 조작하는 권한

특정 테이블의 데이터를 아무나 함부로 조회하면 안되므로 회사에서는 dba들이 권한관리를 아주 철저하게 함.

 

예제. 현재 접속해있는 유저가 누구인지 확인하는 방법

show user;

예제. 유저 생성하기

create user c##smith
 identified by tiger;
 -- c## 은 보안상의 이유이므로 만약 안 될 경우 빼도 됨.

enterprise edition 버전은 유저이름 앞에 c##을 안붙여도 되는데 express edition의 경우는 18c부터 c##을 붙여야함. identified by 다음에 비밀번호를 적어줘야 하는데 비밀번호를 생성할 때 보안을 강력하게 하려면 문자,숫자,특수문자,대소문자 구분까지 섞어서 만들어주면 해킹하기 어려워짐.

 

예제. smith유저에게 접속할 수 있는 권한 부여

grant connect to c##smith;

예제. 유저가 잘 생성되어졌고 권한을 잘 부여되었는지 확인

select *
 from dba_users;
select *
 from dba_role_privs
 where grantee='C##SMITH';

C##SMITH 유저가 connect 라는 role을 부여받았기 때문에 접속할 수 있는 권한이 생겼습니다. 

 

sqldeveloper를 하나 더 켜서 smith로 접속하시오.

sqldeveloper 접속할 때 접속 버튼이 안보이면 저장을 누르면 보입니다.

 

예제. 접속한 smith유저에서 다음과 같이 테이블을 생성하시오.

SMITH 유저는 접속권한만 받았을 뿐 테이블을 생성하거나 등의 권한을 받진 않았음.

> 현재 권한을 가지고 있는 scott유저에서 smith유저에게 테이블 생성 권한을 부여해야함.(scott 창에서 부여)

grant create table to c##smith;

다시 smith 창에서 테이블을 생성하면 생성됨.

 

예제. 내가 접속한 유저가 가지고 있는 권한 리스트를 확인하는 방법

select *
 from session_privs;

(c##smith로 접속했을 때)

CREATE SESSION   <== connect 할 수 있는 권한
CREATE TABLE
SET CONTAINER    <== 12c이후에 생긴 권한인데 클라우드 db로 구성되었다는 뜻.

 

예제. 이번에는 다시 scott유저에서 smith유저에게 create view 권한을 부여하세요.(scott 창에서 부여)

grant create view to c##smith;

CREATE SESSION
CREATE TABLE
CREATE VIEW  <== view 생성할 수 있는 권한이 들어옴.
SET CONTAINER

 

문제641. scott유저에서 king이라는 유저를 만들고, king 유저에게 connect, create table, create view 권한을 부여하세요.

create user c##king
 identified by tiger;
 
grant connect to c##king;
grant create table to c##king;
grant create view to c##king;

-- 한번에 줄 수도 있음
grant connect, create table, create view to c##king;
-- user 잘못 만들었을 경우
drop user king cascade;

 

예제.smith에게 부여했던 create table권한을 취소하시오.(scott 창에서 권한취소)

revoke create table from c##smith;

 

문제642. king에게 줬던 create vie 권한과 connect 권한을 모두 취소하시오.

revoke create view, connect from c##king;
반응형

'Study > class note' 카테고리의 다른 글

python / 설치  (0) 2021.12.06
sql / TCL  (0) 2021.12.06
sql / SQL을 이용해서 빅데이터 분석하기(활용)  (0) 2021.12.06
문제8. SQL / 마름모 출력하기  (0) 2021.12.03
sql / 알고리즘문제2  (0) 2021.12.02