에듀테크 프로젝트 대시보드
역할 · 데이터베이스 · 스키마
PostgreSQL 에는 '사용자'와 '그룹'이 따로 없고 역할(ROLE) 하나로 통합돼 있습니다. LOGIN 속성이 있으면 접속 계정입니다.
-- 슈퍼유저(postgres)로 실행
CREATE ROLE school WITH LOGIN PASSWORD 'change-me';
CREATE DATABASE school OWNER school;
-- 접속 제한 예
ALTER ROLE school CONNECTION LIMIT 20;
ALTER ROLE school VALID UNTIL '2027-01-01';# psql 밖에서 쓰는 래퍼 (Ubuntu)
sudo -u postgres createuser --interactive --pwprompt school
sudo -u postgres createdb -O school school| 속성 | 의미 |
|---|---|
LOGIN / NOLOGIN | 접속 가능 여부 (그룹 역할은 NOLOGIN) |
SUPERUSER | 모든 권한 우회 — 앱 계정엔 절대 부여 금지 |
CREATEDB / CREATEROLE | DB·역할 생성 권한 |
REPLICATION | 복제 연결용 |
CREATE ROLE app_read NOLOGIN;
CREATE ROLE app_write NOLOGIN;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO app_read;
GRANT app_read TO reporting_user; -- 상속
GRANT app_read, app_write TO school;새로 만들어질 테이블에도 자동 적용하려면 ALTER DEFAULT PRIVILEGES 를 함께 걸어야 합니다.
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO app_read;public 스키마에 기본적으로 테이블을 만들 수 없음OWNER 로 소유하거나 GRANT CREATE ON SCHEMA public TO school;-- 스키마 분리 운영 예
CREATE SCHEMA app AUTHORIZATION school;
ALTER ROLE school SET search_path = app, public;