/*
SELECT TABLE, VIEW, SEQUENCE INSERT TABLE, VIEW UPDATE TABLE, VIEW DELETE TABLE, VIEW ALTER TABLE, SEQUENCE REFERENCES TABLE INDEX TABLE EXECUTE PROCEDURE/*
모든 권한과 책임을 가지는 계정. ex sys(최고관리자), system(sys에서 권한 몇개가 제외된 관리자) 작업을 수행할 수 있는 계정으로 업무에 필요한 최소한의 권한만을 가지는것을 원친으로 한다. ex) kh, workbook 등-- 1. (SYS) 사용자 계정 생성
ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE;
--> 예전 SQL 방식 허용 (계정명을 간단히 작성 가능)
-- [작성법]
-- CREATE USER 사용자명 IDENTIFIED BY 비밀번호;\
CREATE USER lee_sample IDENTIFIED BY 1234;
-- 2. 새 연결(접속방법)추가
--> 접속권한
--3. 접속 권한 부여
--[권한 부여 작성법]
-- GRANT 권한, 권한, ... TO 사용자명;
GRANT CREATE SESSION TO lee_sample;
-- 4. 다시 연결(접속 방법) 추가 --> 성공
-- 5.(sample) 테이블 생성
CREATE TABLE TB_TEST(
PK_COL NUMBER PRIMARY KEY,
CONTENT VARCHAR2(100)
);
--ORA-01031: 권한이 불충분합니다
-- CREATE TABLE : 테이블 생성 권한
-- + 데이터를 저장할 수 있는 공간(TABLESPACE)할당
-- 6. 테이블 생성 권한 + TABLESPACE 할당
GRANT CREATE TABLE TO lee_sample;
ALTER USER lee_sample DEFAULT TABLESPACE
SYSTEM QUOTA UNLIMITED ON SYSTEM;
-- 7. (sample)다시 테이블 생성
CREATE TABLE TB_TEST(
PK_COL NUMBER PRIMARY KEY,
CONTENT VARCHAR2(100)
);
-- ROLE(역할) : 권한 묶음
--> 묶어둔 권한(ROLE) 특정 계정에 부여
--> 해당 계정은 지정된 권한을 이용해서 특정 역할을 갖게된다.
--(SYS) sample 계정에 CONNECT, RESOURCE 부여
GRANT CONNECT, RESOURCE TO lee_sample;
-- CONNECT : DB 접속 관련 권한을 묶어둔 ROLE
-- RESOURCE : DB 사용을 위한 기본 객체 생성 권한은 묶어둔 ROLE
-- 객체 권한
-- kh / lee_sample 사용자 계정끼리 서로 객체 접근 권한 부여
-- 1. (sample) kh 계정의 EMPLOYEE 테이블 조회
SELECT * FROM kh.EMPLOYEE;
-- ORA-00942: 테이블 또는 뷰가 존재하지 않습니다
--> 접근 권한이 없어서 조회 불가
-- 2. (kh) lee_sample 계정에 EMPLOYEE 테이블 조회 권한 부여
--[객체 권한 부여 방법]
-- GRANT 객체권한 ON 객체명 TO 사용자명;
GRANT SELECT ON EMPLOYEE TO lee_sample;
-- 3. (sample) 다시 kh.EMPLOYEE 조회
SELECT * FROM kh.EMPLOYEE;
--4. (kh) sample 계정에 부여한 EMPLOYEE 테이블 조회 권한 회수(REVOKE)
--[권한 회수 작성법]
-- REVOKE 객체권한 ON 객체명 FROM 사용자명;
REVOKE SELECT ON EMPLOYEE FROM lee_sample;
-- 5. (sample) 다시 kh.EMPLOYEE 조회
SELECT * FROM kh.EMPLOYEE;
개발자로서 성장하는 데 큰 도움이 된 글이었습니다. 감사합니다.