[SQL] Oracle 역할(ROLE) 정리 - CREATE ROLE / GRANT / REVOKE / CONNECT / RESOURCE / DBA
by 우와한개발자
1. ROLE이란?
- 여러 권한을 하나로 묶어 관리하는 객체
- 사용자에게 권한을 일일이 부여하는 번거로움을 줄임
- ROLE을 수정하면 해당 ROLE을 가진 모든 사용자에게 자동 반영됨
| 구분 | 직접 권한 부여 | ROLE 사용 |
| 관리 | 권한 하나씩 부여 ❌ | ROLE 하나만 부여 ✅ |
| 수정 | 사용자마다 개별 수정 ❌ | ROLE만 수정하면 일괄 적용 ✅ |
| 편의성 | 불편 | 편리 |
권한을 하나씩 부여할 때
DBA → user1 : CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE ...❌ 번거로움
ROLE을 사용할 때
DBA → ROLE에 권한 묶음 → user1에게 ROLE 부여 ✅ 편리함
2. ROLE 생성 / 삭제
-- ROLE 생성
CREATE ROLE 롤명;
-- ROLE 삭제
DROP ROLE 롤명;
-- myrole에 여러 권한 부여
GRANT CREATE SESSION TO myrole;
GRANT CREATE TABLE TO myrole;
GRANT CREATE VIEW TO myrole;
3. ROLE에 권한 부여 /회수
-- ROLE에서 권한 부여
GRANT 권한명 TO 롤명;
-- ROLE에서 권한 회수
REVOKE 권한명 FROM 롤명;
GRANT CREATE SESSION TO myrole;
REVOKE CREATE SESSION FROM myrole;
4. 사용자에게 ROLE 부여 / 회수
-- 사용자에게 ROLE 부여
GRANT 롤명 TO 사용자명;
-- 사용자에게 ROLE 회수
REVOKE 롤명 FROM 사용자명;
-- DBA(system)로 접속
CONN system/1234
-- user1, user2에게 myrole 부여
GRANT myrole TO user1;
GRANT myrole TO user2;
-- user1 접속 확인
CONN user1/1234 -- ✅ CREATE SESSION 포함되어 로그인 가능
CREATE TABLE test(id NUMBER); -- ✅ CREATE TABLE 포함되어 생성 가능
-- user1에게서 myrole 회수
CONN system/1234
REVOKE myrole FROM user1;
CONN user1/1234 -- ❌ CREATE SESSION 없어 로그인 불가
5. 기본 제공 ROLE
| ROLE 이름 | 포함 권한 |
| CONNECT | CREATE SESSION 등 접속 관련 권한 |
| RESOURCE | CREATE TABLE, CREATE SEQUENCE 등 객체 생성 권한 |
| DBA | 모든 시스템 권한 |
-- 일반적으로 사용자 생성 후 기본 ROLE 부여
CONN system/1234
CREATE USER user1 IDENTIFIED BY 1234;
GRANT CONNECT TO user1; -- 접속 권한
GRANT RESOURCE TO user1; -- 객체 생성 권한
'데이터베이스 > SQL' 카테고리의 다른 글
블로그의 정보
우와한개발자 님의 블로그
우와한개발자