DCL (데이터 제어어 : Data Control Language)
1. 유저와 권한
1️⃣ DCL 명령의 기초 개념
1) DCL(Data Control Language)
- 데이터베이스에서 사용자 권한을 관리하고 제어하는 데 사용되는 SQL 명령어
- 데이터베이스 관리자(DBA)가 데이터베이스 사용자와 그들이 수행할 수 있는 작업을 관리하기 위해 사용됨
2️⃣ 유저
1) 유저
- 데이터베이스에 접근할 수 있는 계정
- 각 사용자는 고유한 유저 이름과 비밀번호 가지며, 이 계정을 통해 데이터베이스에 로그인하여 작업 수행
- 데이터베이스 관리자는 새로운 유저를 생성하거나 유저의 권한을 설정하고 관리할 수 있음
CREATE USER 유저명 IDENTIFIED BY 패스워드;2️⃣ 권한
1) 권한
- 사용자가 데이터베이스에서 수행할 수 있는 작업의 범위
- 권한은 일반적으로 데이터베이스 객체(예:테이블, 뷰)나 특정한 SQL 명령어(예:SELECT, INSERT, UPDATE, DELETE)에 대한 접근을 제어하는 데 사용됨
- 사용자에게 직접 부여할 수 있으며, 특정 역할(Role)에 권한을 부여하고, 해당 역할을 사용자에게 부여할 수 있음
2) 주요 권한
- 시스템 권한(System Privileges)
- 데이터베이스 전체에 영향을 미치는 작업에 대한 권한
- 예) CREATE TABLE, CREATE USER, ALTER SYSTEM 등
- 객체 권한(Object Privileges)
- 특정 데이터베이스 객체(예: 테이블, 뷰, 프로시저)에 대한 접근 권한
- 예) SELECT, INSERT, UPDATE, DELETE 등
2. GRANT & REVOKE 명령어
1️⃣ GRANT 명령어
1) GRANT 명령어
- 사용자나 역할(Role)에게 특정 권한 부여하는 데 사용됨
2) 형식
GRANT 권한명 ON 객체명 TO 유저명;3) 예시
// bbigter 사용자에게 EMP 테이블에 대한 SELECT와 INSERT 권한 부여
GRANT SELECT, INSERT ON EMP TO bbigter;4) WITH GRANT OPTION
- 유저가 부여받은 권한을 다른 사용자에게 다시 부여할 수 있도록 허용하는 옵션
GRANT SELECT ON EMP TO bbigter WITH GRANT OPTION;2️⃣ REVOKE 명령어
1) REVOKE 명령어
- 사용자나 역할(Role)에게 특정 권한 회수하는 데 사용됨
2) 형식
REVOKE 권한명 ON 객체명 FROM 유저명;3) 예시
// bbigter 사용자에게 EMP 테이블에 대한 SELECT와 INSERT 권한 회수
REVOKE SELECT, INSERT ON EMP FROM bbigter;3. Role을 이용한 권한 부여
1️⃣ Role 기초 개념
1) Role
- 여러 권한을 하나로 묶어 관리할 수 있는 방법
- 사용자의 권한 관리를 일괄적으로 할 수 있어 관리가 용이해지고 오류의 가능성 줄일 수 있음
2️⃣ Role을 이용한 권한 부여
1) Role 생성
- 새로운 Role 생성하기 위해 CREATE ROLE 명령어 사용
- 형식
CREATE ROLE Role명칭;- 예시
// hr_role이라는 이름의 새로운 Role 생성
CREATE ROLE hr_role;2) Role에 권한 부여
- GRANT 명령으로 생성된 Role에 특정 권한 부여
- 예시
// hr_role에 EMP 테이블에 대한 SELECT와 INSERT 권한 부여, 테이블 생성 권한도 부여
GRANT SELECT, INSERT ON EMP TO hr_role;
GRANT CREATE TABLE TO hr_role;3) 사용자에게 Role 할당
- 권한이 부여된 Role을 사용자에게 할당
- 예시
// bbigter 유저에게 hr_role 할당하여, 해당 Role이 가진 모든 권한 부여
GRANT hr_role TO bbigter;4) 사용자에게 부여된 Role 회수
- 사용자가 더 이상 특정 Role에 속하지 않도록 하려면 REVOKE 명령어를 사용해 해당 Role 회수
- 예시
// bbigter 유저로부터 hr_role 회수하여, 더 이상 해당 Role이 가진 모든 권한 사용하지 못하게 함
REVOKE hr_role FROM bbigter;4) Role 삭제
- 더 이상 필요하지 않은 Role 삭제
- Role을 삭제하면 해당 Role에 속한 모든 사용자들은 해당 Role로부터 부여받은 권한 잃음
- 예시
DROP ROLE hr_role;Share article