사용자 권한 부여
권한 부여 : GRANT
권한 제거 : REVOKE
※시스템 권한 - 데이터베이스 접속, 사용자 생성 및 오브젝트 생성 등의 권한
※오브젝트 권한 - 해당 오브젝트에 대한 전반적인 작업을 위한 권한
시스템 권한
시스템 권한 종류 |
내용 |
CREATE USER |
데이터 베이스 유저 생성 권한 |
SELECT ANY TABLE |
모든 유저의 테이블 조회 권한 |
CREATE ANY TABLE |
모든 유저의 테이블 생성 권한 |
CREATE SESSION |
데이터베이스 접속 권한 |
CREATE TABLE |
테이블 생성 권한 |
CREATE VIEW |
뷰 생성 권한 |
CREATE PROCED USER |
프로시저 생성 권한 |
CREATE TRIGGER |
트리거 생성 권한 |
CREATE SEQUENCE |
시퀀스 생성 권한 |
SYSDBA |
데이터베이스를 관리하는 최고 권한 |
SYSOPER |
데이터베이스를 관리하는 권한 |
SYSOPER
⊙ 데이터베이스 시작, 종료 및 상태 전환
⊙ 테이블스페이스 및 컨트롤 파일 백업
⊙ 데이터베이스 아카이브 또는 노아카이브 로그 모드 전환
⊙ 파라메터 파일 생성
⊙ 데이터베이스 완전 복구
⊙ 접속 세션 제한
SYSDBA
⊙ SYSOPER가 소유한 모든 권한
⊙ 데이터베이스 생성 및 삭제
⊙ 데이터베이스 불완전 복구
오브젝트 권한
권한 |
TABLE |
VIEW |
SEQUENCE |
PROCEDURE |
ALTER |
V |
|
V |
|
DELETE |
V |
V |
|
|
EXECUTE |
|
|
|
V |
INDEX |
V |
V |
|
|
INSERT |
V |
|
|
|
REFERNCES |
V |
|
|
|
SELECT |
V |
V |
V |
|
UPDATE |
V |
V |
|
|
[실습]
먼저 유저를 생성한다.
유저 생성 권한은 기본적으로 SYSTEM계정에만 있다.
USER 생성
CREATE USER [USERNAME] IDENTIFIED BY [PASSWORD];
다른 유저로 접속
CONN PAYJAY/1234;
현재 접속한 유저 확인
SHOW USER;
ERROR:
ORA-01045: user PAYJAY lacks CREATE SESSION privilege; logon denied
현재 데이터베이스 접근권한이 없어서 ERROR 발생.
GRANT [권한1, 권한2, …] ON [객체명] TO [권한을 부여받을 계정];
다시 SYSTEM으로 접속.
사용자에게 데이터베이스 접근권한 부여
GRANT CREATE SESSION TO PAYJAY;
다른 계정의 객체 접근할 권한 부여
SCOTT의 경우
GRANT SELECT ON EMP TO PAYJAY; == 특정 객체를 SELECT 할 권한 부여
GRANT INSERT ON EMP TO PAYJAY; == 특정 객체에 INSERT 할 권한 부여
SYSTEM의 경우
GRANT SELECT ON SCOTT.EMP TO PAYJAY; == 특정 객체를 SELECT 할 권한 부여
GRANT INSERT ON SCOTT.EMP TO PAYJAY; == 특정 객체에 INSERT 할 권한 부여
본인 계정으로 접속 후 다른 계정의 테이블 SELECT 해보기
SELECT * FROM SCOTT.EMP;
다른 계정의 테이블에 INSERT 해보기
INSERT INTO SCOTT.EMP VALUES (
7777,
'USERNAME',
'DEVELOP',
7777,
'2018-11-07',
5000,
700,
40
);
REVOKE
사용자로부터 권한을 제거하는 명령어.
REVOKE [권한1, 권한2, …] ON [객체명] FROM [권한을 제거할 계정];
SYSTEM 계정으로 전환
REVOKE SELECT ON SCOTT.EMP FROM PAYJAY;
WITH GRANT OPTION
권한을 주면서 권한을 받은 유저에게 해당 권한을 또 다른 유저에게 줄 수 있게 하는 OPTION
GRANT [권한1, 권한2…] TO [권한을 부여받을 계정] WITH GRANT OPTION;
GRANT CREATE SESSION TO PAYJAY WITH GRANT OPTION;
PUBLIC
PUBLIC 키워드는 모든 사용자에게 해당 권한을 부여하는 OPTION
GRANT [권한1, 권한2…] ON [객체명] TO PUBLIC;
GRANT CREATE SESSION TO PUBLIC; == 모든 사용자에게 데이터베이스 접근 권한 부여
ROLE
ROLE이란 여러 권한들을 하나로 묶는 것.
롤 생성
CREATE ROLE [권한을 부여받을 롤];
롤에 권한 부여
GRANT [권한1, 권한2…] TO [권한을 부여받을 롤];
사용자에게 권한을 담은 롤 부여
GRANT [롤 이름] TO PAYJAY;
CREATE ROLE MYROLE;
GRANT CREATE SESSION, CREATE TABLE TO MYROLE;
GRANT MYROLE TO PAYJAY;
ORACLE에서 제공하는 대표적인 ROLE
CONNECT : 사용자가 데이터베이스에 접속 가능하도록 가장 기본적인 시스템 권한을 그룹화한 것
RESOURCE : 사용자가 객체(TABLE, INDEX, VIEW)를 생성할 수 있도록 시스템 권한을 그룹화한 것
DBA : 시스템 관리에 필요한 모든 권한을 부여할 수 있는 강력한 권한
ROLE 삭제
DROP ROLE [삭제할 롤 이름]
사용자 계정 삭제
SYSTEM으로 접속
DROP USER USERNAME CASCADE;
계정에 관련된 모든 스키마가 삭제됨.
'Database' 카테고리의 다른 글
[ORACLE] 오라클에서 엑셀파일 IMPORT 하기 (0) | 2018.11.12 |
---|---|
[Database] Database 개요 (0) | 2018.11.06 |