<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');