카테고리 없음

SQLD 를 위한 SQL기본문법 정리 8 - DCL

ADELA_J 2024. 2. 19. 20:02

<DCL (Data Control Language)>

- 사용자의 계정 생성/삭제, 권한 부여/회수에 대한 명령어

 

EX. 만약 ID : SYSTEM / PW : PW0101 로 로그인했다면

CREATE USER 사용자ID IDENTIFIED BY 패스워드; --사용자ID신규만들기
ALTER USER 사용자ID IDENTIFIED BY NEW패스워드; --기존사용자ID 비번 바꾸기

-- @------------여기까지는 사용자ID가 로그인해서 새로운ID를 만들어도 안됨

GRANT CREATE USER TO 사용자ID;		--사용자ID에게 권한 줌

-- @------------권한을줬기 때문에 새로운ID를 만들수 있음

REVOKE CREATE USER FROM 사용자ID; --사용자ID 권한 회수

-- @----------- 권한이 없어서 새로운ID못만들어

DROP USER 사용자ID CASCADE; -- 사용자ID 삭제

 

DROP할 때 

- CASCADE 옵션 사용시 사용자가 생성한 객체도 함께 삭제됨

 : 사용안하면 다른 객체를 만들지 않았을 때만 삭제가 가능함.

 

<SESSION 생성 권한>

 - 로그인을 위해 CREATE SESSION 권한 필요. 

GRANT CREATE SESSION TO mentid;

 

<Object 권한>

- 테이블 생성을 위해 creat table 권한 줘야함 : table 관련 권한을 다 가질 수 있음.

GRANT CREATE TABLE TO mentid;

 

- 다른 사람이 만든 테이블에 접근하려 할 때 : GRANT 권한 ON 소유계정.테이블명 TO 계정명

- mentid 계정에 PLAYER라는 테이블이 있는 경우 

GRANT SELECT ON mentid.PLAYER TO cleid; -- 관리자 계정으로 접속했을 때 
GRANT SELECT ON PLAYER TO cleid; -- mentid 계정으로 접속한 상태일 때

SELECT * FROM PLAYER; -- mentid 계정에서 자신 계정의 PLAYER 테이블 조회
SELECT * FROM cleid.PLAYER; -- mentid 계정에서 cleid 계정의 PLAYER 테이블을 조회하고자 할때

 

"소유주 계정의 아이디를 적고 테이블을 적는 것이 포인트 (본인꺼는 생략 가능)"

 

<객체별 권한의 종류>

권한 객체
TABLE VIEW SEQUENCE PROCEDURE
SELECT O O O  
INSERT O O    
UPDATE O O    
DELETE O O    
ALTER O   O  
EXECUTE       O
INDEX O      
REFERENCES O      

 

 

<ROLE을 이용한 권한 부여>

 

일일이 권한을 주기 힘드니까 

권한들의 묶음을 만들어 놓은 것.

 

CREATE ROLE MY ROLE;
GRANT CREATE SESSION, CREATE TABLE TO MY_ROLE;
GRANT MY_ROLE TO ID;

권한 패키지 MY ROLE을 만들어서 부여하는 방법

> ROLE과 ROLE를 묶어서 새로 만들 수 도 있음.

> 권한과 ROLE을 묶어서 만들수도 물론 있음.

 

기존에 있는 ORACLE의 ROLE를 부여할 수도 있음.

CREATE USER ID IDENTIFIED BY PW;
GRANT CONNECT, DBA, RESOURCE TO ID;

 

권한 확인을 위해서는

SELECT GRANTEE,PRIVILEGE
FROM DBA_SYS_PRIVS
WHERE GRANTEE IN ('CONNECT', 'RESOURCE');