01. 사용자 (USER)
- 사용자: 데이터베이스에 접속하여 데이터를 사용/관리하는 계정.
- 데이터베이스 스키마: 데이터를 저장 및 관리하기 위해 정의된 데이터베이스 구조의 범위. 사용자는 하나의 스키마를 소유합니다.
- 권한 (Privileges): 접속 사용자에 따라 접근할 수 있는 데이터 영역을 지정. 권한에는 시스템 권한과 객체 권한이 있음.
- GRANT: 권한을 사용자에게 부여하는 명령어.
- REVOKE: 사용자에게 부여된 권한을 회수하는 명령어.
- 시스템 권한: 사용자 생성, 정보 수정, 데이터베이스 접근 등과 관련된 권한.
- 객체 권한: 특정 사용자가 생성한 객체(테이블, 뷰 등)와 관련된 권한.
1. 시스템 권한과 객체 권한의 차이
- 시스템 권한: 사용자가 데이터베이스 시스템 내에서 객체를 생성, 삭제, 수정할 수 있는 권한.
- 예: CREATE USER, CREATE TABLE, CREATE VIEW 등.
- 객체 권한: 특정 객체(테이블, 뷰 등)에 대해 데이터를 조회, 수정, 삭제할 수 있는 권한.
- 예: SELECT, INSERT, UPDATE, DELETE 등.
2. 객체 권한 분류
객체 유형 권한 설명
TABLE | ALTER | 테이블 구조 수정 |
DELETE | 테이블 데이터 삭제 | |
INDEX | 테이블 인덱스 생성 | |
INSERT | 테이블에 데이터 추가 | |
REFERENCES | 테이블 외래 키 참조 | |
SELECT | 테이블 데이터 조회 | |
UPDATE | 테이블 데이터 수정 | |
VIEW | DELETE | 뷰에서 데이터 삭제 |
INSERT | 뷰에 데이터 추가 | |
REFERENCES | 뷰 외래 키 참조 | |
SELECT | 뷰에서 데이터 조회 | |
UPDATE | 뷰에서 데이터 수정 | |
SEQUENCE | ALTER | 시퀀스 수정 |
SELECT | 시퀀스 값 조회 | |
PROCEDURE | EXECUTE | 프로시저 실행 |
FUNCTION | EXECUTE | 함수 실행 |
PACKAGE | EXECUTE | 패키지 실행 |
02. 권한 관리 (Privileges Management)
1. 사용자 생성 및 권한 부여
-- 사용자 생성
CREATE USER ORCLSTUDY IDENTIFIED BY ORACLE;
-- 사용자에게 세션 생성 권한 부여
GRANT CREATE SESSION TO ORCLSTUDY;
- CREATE USER: 새로운 사용자 계정을 생성.
- CREATE SESSION: 사용자가 데이터베이스에 로그인할 수 있도록 권한 부여.
2. 사용자 비밀번호 변경
-- 사용자 비밀번호 변경
ALTER USER ORCLSTUDY IDENTIFIED BY ORCL;
3. 사용자 삭제
-- 사용자 삭제
DROP USER ORCLSTUDY;
4. 사용자 권한 부여 예시
-- ORCLSTUDY 사용자에게 다양한 권한 부여
GRANT RESOURCE, CREATE SESSION, CREATE TABLE TO ORCLSTUDY;
03. 객체 권한 부여 및 취소
1. 테이블 생성 및 객체 권한 부여
-- SCOTT 사용자로 로그인하여 TEMP 테이블 생성
CREATE TABLE TEMP (
COL1 VARCHAR(20),
COL2 VARCHAR(20)
);
-- ORCLSTUDY 사용자에게 TEMP 테이블의 SELECT 및 INSERT 권한 부여
GRANT SELECT, INSERT ON TEMP TO ORCLSTUDY;
- GRANT SELECT, INSERT: ORCLSTUDY 사용자에게 TEMP 테이블에 대한 조회 및 데이터 삽입 권한 부여.
2. 권한 철회 (REVOKE)
-- SCOTT 사용자로 로그인하여 ORCLSTUDY의 권한 취소
REVOKE SELECT, INSERT ON TEMP FROM ORCLSTUDY;
- REVOKE: ORCLSTUDY 사용자에게 부여된 권한을 회수.
3. 권한 철회 후 사용 시도
-- ORCLSTUDY로 로그인하여 TEMP 테이블 접근 시도 (실패)
CONN ORCLSTUDY/ORACLE;
SELECT * FROM SCOTT.TEMP; -- 권한 부족으로 실패
04. 롤 (Role)
- 롤 (ROLE): 여러 개의 권한을 묶어서 관리할 수 있는 기능. 한 번에 여러 권한을 사용자에게 부여할 수 있음.
- 사전 정의된 롤:
- CONNECT: 기본적인 데이터베이스 접속 및 객체 생성 권한.
- RESOURCE: 더 많은 객체 생성 권한 (테이블, 시퀀스, 인덱스 등).
- DBA: 데이터베이스 전체 관리 권한을 포함한 최고 권한.
- 사전 정의된 롤:
1. 롤 생성 및 권한 부여
-- SYSTEM 계정으로 로그인 후 롤 생성 및 권한 부여
CREATE ROLE ROLESTUDY;
GRANT CONNECT, RESOURCE, CREATE VIEW, CREATE SYNONYM TO ROLESTUDY;
2. 롤을 사용자에게 부여
-- ORCLSTUDY 사용자에게 ROLESTUDY 롤 부여
GRANT ROLESTUDY TO ORCLSTUDY;
3. 사용자 롤 및 권한 확인
-- ORCLSTUDY 사용자로 로그인하여 부여된 롤 및 권한 확인
CONN ORCLSTUDY/ORACLE;
-- 사용자에게 부여된 시스템 권한 확인
SELECT * FROM USER_SYS_PRIVS;
-- 사용자에게 부여된 롤 확인
SELECT * FROM USER_ROLE_PRIVS;
요약
- 사용자: 데이터베이스에 접속하여 데이터를 관리하는 계정.
- 권한: 시스템 권한과 객체 권한으로 나뉘며, GRANT로 부여, REVOKE로 취소.
- 롤 (Role): 여러 권한을 묶어 사용자가 한 번에 권한을 받도록 관리하는 기능.
'SQL > 개념' 카테고리의 다른 글
10. 제약 조건 (0) | 2023.05.09 |
---|---|
09. 객체 종류 (0) | 2023.05.09 |
08. 데이터 정의어(DDL) (0) | 2023.05.09 |
07. 트랜잭션 제어와 세션(TCL) (0) | 2023.05.09 |
06. 데이터 조작어(DML) (0) | 2023.05.08 |