sellen

DCL 본문

DataBase/관계형 DB

DCL

sellen 2025. 7. 21. 00:38

💡 이 내용 이후로 모든 SQL 관련 내용은 NomadCoder 강의를 듣고 정리한 글입니다.
아래의 링크에 SQL 학습에 필요한 데이터가 존재합니다.
https://nomadcoders.co/sql-masterclass
아래의 글과 함께 보시면 좋습니다.

2025.07.16 - [Programming/DataBase] - 데이터 제어어 (DCL

DCL

Data Control Language
  • 사용자가 DB를 조회하고 수정할 수 있는 권한을 설정하는 언어
  • SQLite에서는 DCL이 존재하지 않는다.

https://www.postgresql.org/docs/current/sql-createrole.html

 

CREATE ROLE

CREATE ROLE CREATE ROLE — define a new database role Synopsis CREATE ROLE name [ [ WITH ] option [ …

www.postgresql.org


ROLE 생성

CREATE ROLE {account} WITH LOGIN PASSWORD {password}
CREATE ROLE marketer WITH LOGIN PASSWORD 'marketing4ever';

권한 부여

일부 권한 1개만 부여

GRANT {DML} ON {table_name} TO {account}
GRANT SELECT ON movies TO marketer;

특정 Column에 대한 권한만 부여

GRANT {DML} (column_name) ON {table_name} TO {role};
GRANT SELECT (title) ON movies TO editor;

권한 여러 개 부여

만약 다른 테이블과 JOIN을 할 때 해당 테이블에 대한 SELECT 권한이 없으면 JOIN을 하지 못한다.

GRANT SELECT, INSERT ON movies, statuses TO marketer;

특정 Schema 내의 모든 테이블에 대해 권한 부여

GRANT {DML} ON ALL TABLES IN SCHEMA {schema_name} TO {account}
GRANT SELECT ON ALL TABLES IN SCHEMA public TO marketer;

권한 제거

일부 권한 제거

REVOKE {DML} ON {table_name} FROM {account};
REVOKE INSERT ON movies FROM marketer;

특정 Schema 내의 모든 테이블에 대한 권한 제거

REVOKE {DML} ON ALL TABLES IN SCHEMA {schema_name} TO {account}
REVOKE SELECT ON ALL TABLES IN SCHEMA public FROM marketer;

ROLE 삭제

DROP ROLE {account}
DROP ROLE marketer;

여러 계정 생성

1. ROLE 생성

CREATE ROLE editor;

 

2. ROLE에 권한 부여

GRANT SELECT ON movies TO editor;

3. 계정 생성

CREATE USER editor_one WITH PASSWORD 'one';

4. 계정에 ROLE 부여

GRANT editor TO editor_one;

5. 동시 로그인 방지

ALTER ROLE editor_one WITH CONNECTION LIMIT 1;

 

'DataBase > 관계형 DB' 카테고리의 다른 글

PostgreSQL Extensions  (2) 2025.07.21
SQL에서 JSON 다루기  (4) 2025.07.21
Transaction  (1) 2025.07.21
Function & Procedures  (5) 2025.07.21
정규화 - PostgreSQL  (1) 2025.07.20