DataBase/관계형 DB
DCL
sellen
2025. 7. 21. 00:38

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