PostgreSQL 정리

이형욱·2025년 7월 4일

실행환경


  • docker: 28.1.0
  • postgreSQL: 17.5 (Debian 17.5-1.pgdg120+1)
  • docker-compose.yml
    services:
      postgres:
        image: postgres
        container_name: postgres
        restart: unless-stopped
        shm_size: 512mb
        environment:
          TZ: Asia/Seoul
          POSTGRES_USER: 유저명        # 사용자명
          POSTGRES_PASSWORD: 비밀번호 # 비밀번호
          POSTGRES_DB: postgres # 초기 접속 DB
        ports:
          - "5432:5432"                 # 호스트 포트:컨테이너 포트
        volumes:
          - postgres_data:/var/lib/postgresql/data
    
    volumes:
      postgres_data:

명령어


  1. 도커 컨테이너 접속

    docker exec -it 도커 컨테이너명 sh
  1. postgres 접속

    psql -U 유저명 -d 초기접속DB명
  1. 유저 전체 목록 출력

    \du
  2. 유저 생성

    CREATE USER app_user WITH PASSWORD 'password';
  1. 데이터베이스 목록 출력

    \l
  2. 데이터베이스 생성

    CREATE DATABASE 데이터베이스 명;
  1. 데이터베이스 접근 권한 부여

    // 1. 해당 데이터베이스로 접속
    \c 데이터베이스명
    
    // 2. PUBLIC 권한 제거(모든 유저, 데이터베이스 주인, 슈퍼유저 제외)
    REVOKE ALL ON DATABASE get_job_db FROM PUBLIC;
    
    // 3. 유저에게 DB 접속 권한 부여
    GRANT CONNECT ON DATABASE get_job_db TO app_user;
    
    // 4. 사용자에게 public 스키마에 대한 접근 권한 부여
    GRANT USAGE ON SCHEMA public TO app_user;
    
    // 5. 사용자로부터 public 스키마의 생성 권한 제거
    REVOKE CREATE ON SCHEMA public FROM app_user;
    
    // 6. 사용자에게 테이블 CRUD 권한 부여
    GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user;
    
    // 7. 앞으로 생성될 테이블에 대한 CRUD 권한 자동 부여
    ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_user;
    
profile
바나나는 하드디스크보다 따듯하다.

0개의 댓글