TIL IN DCL
데이터를 다루기 위한 권한을 다루는 언어로 계정에 DB, DB객체에 대한 접근 권한을 부여( GRANT )하고 회수( REVOKE )하는 언어이다.
CREATE SESION : 데이터베이스 접속 권한
CREATE TABLE : 테이블 생성 권한
CREATE VIEW : 뷰 생성 권한
CREATE SEQUNCE : 시퀀스 생성 권한
CREATE PROCUDUER : 함수(프로시져) 생성 권한
CREATE USER : 사용자(계정) 생성 권한
DROP USER : 사용자(계정) 삭제 권한
권한종류 | 설정 객체 |
---|---|
SELECT | TABLE, VIEW, SEQINCE |
INSERT | TABLE, VIEW |
UPDATE | TABLE, VIEW |
DELETE | TABLE, VIEW |
ALTER | TABLE, SEQINCE |
REFERENCES | TABLE |
INDEX | TABLE |
EXECUTE | PROCEDURE |
ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE;
--> 예전 SQL 방식 허용 (계정명을 간단히 작성 가능)
[작성법]
--CREATE USER 사용자명 IDENTIFIED BY 비밀번호;
CREATE USER cky_sample IDENTIFIED BY 1234;
새 연결 (접속방법) 추가 --> 접속 권한
접속 권한 부여
[권한 부여 작성법]
-- GRANT 권한, 권한, ... TO 사용자명;
GRANT CREATE SESSION TO cky_sample;
다시 연결(접속 방법) 추가 --> 성공
(sample) 테이블 생성
CREATE TABLE TB_TEST(
PK_COL NUMBER PRIMARY KEY,
CONTENT VARCHAR2(100)
);
-- ORA-01031: 권한이 불충분합니다
--> CREATE TABLE : 테이블 생성 권한
-- + 데이터를 저장할 수 있는 공간(TABLESPACE) 할당
GRANT CREATE TABLE TO cky_sample;
ALTER USER cky_sample DEFAULT TABLESPACE
SYSTEM QUOTA UNLIMITED ON SYSTEM;
CREATE TABLE TB_TEST(
PK_COL NUMBER PRIMARY KEY,
CONTENT VARCHAR2(100)
);
묶어둔 권한(ROLE) 특정 계정에 부여
해당 계정은 지정된 권한을 이용해서 특정 역할을 갖게된다.
-- (sys) sample 계정에 CONNECT, RESOURCE 부여
GRANT CONNECT, RESOURCE TO cky_sample;
kh / cky_sample 사용자 계정끼리 서로 객체 접근 권한 부여
SELECT * FROM kh.EMPLOYEE;
-- ORA-00942: 테이블 또는 뷰가 존재하지 않습니다
--> 접근 권한이 없어서 조회 불가 오류
-- [객체 권한 부여 방법]
-- GRANT 객체권한 ON 객체명 TO 사용자명;
GRANT SELECT ON EMPLOYEE TO cky_sample;
SELECT * FROM kh.EMPLOYEE;
-- [권한 회수 작성법]
-- REVOKE 객체권한 ON 객체명 FROM 사용자명;
REVOKE SELECT ON EMPLOYEE FROM cky_sample;
SELECT * FROM kh.EMPLOYEE;
-- ORA-00942: 테이블 또는 뷰가 존재하지 않습니다