postgre db 생성, 사용자 생성 및 권한부여

연어는결국강으로·2026년 2월 25일

DB 공부

목록 보기
6/6

🔥 빠른 요약

1️⃣ CREATE DATABASE + OWNER 지정 방식

유저 생성후 가장 빠르게 생성하는 방법:

CREATE DATABASE myappdb OWNER myappuser;

이러면 권한 세팅이 훨씬 간단해진다.


2️⃣ 만약 Spring / NestJS에서 쓴다면

권한 부족 에러 나오면 대부분:

  • schema 권한 빠짐
  • sequence 권한 빠짐
  • default privilege 안 줌

이 세 개 중 하나다.


0️⃣ psql 접속

먼저 슈퍼유저(postgres)로 접속

psql -U postgres

혹은 로컬이면:

sudo -u postgres psql

1️⃣ 데이터베이스 생성

CREATE DATABASE myappdb;

확인:

\l

2️⃣ 사용자 생성

CREATE USER myappuser WITH PASSWORD 'mypassword';

✔ 비밀번호는 실제 서비스에서는 강하게 설정하자.

확인:

\du

3️⃣ 사용자에게 DB 권한 부여

(1) DB 접속 권한

GRANT ALL PRIVILEGES ON DATABASE myappdb TO myappuser;

하지만 여기서 끝이 아니다 👇
PostgreSQL은 DB 권한과 테이블 권한이 다르다.


4️⃣ 스키마 권한 설정 (중요 ⭐)

DB에 접속한 후 권한을 줘야 한다.

\c myappdb

기본 public 스키마에 대한 권한

GRANT ALL ON SCHEMA public TO myappuser;

5️⃣ 테이블/시퀀스 권한 주기

이미 존재하는 테이블에 대해:

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO myappuser;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO myappuser;

앞으로 생성될 테이블에 대해 자동 적용:

ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT ALL ON TABLES TO myappuser;

ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT ALL ON SEQUENCES TO myappuser;

✅ 최종 요약

CREATE DATABASE myappdb;

CREATE USER myappuser WITH PASSWORD 'mypassword';

GRANT ALL PRIVILEGES ON DATABASE myappdb TO myappuser;

\c myappdb

GRANT ALL ON SCHEMA public TO myappuser;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO myappuser;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO myappuser;

ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT ALL ON TABLES TO myappuser;

ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT ALL ON SEQUENCES TO myappuser;

profile
Backend Engineer | Java, Spring Boot, Kafka | Async Processing & Performance Optimization

0개의 댓글