1. 개요 및 환경

이 포스트는 PostgreSQL을 처음 접하는 초보 개발자 또는 비전공자를 위해, 우분투 22.04 환경을 기준으로 PostgreSQL 설치 방법(호스트 직접 설치, 도커 이용 설치)과 기본 접속/명령어 사용법을 정리합니다. 명령어 예시는 터미널(또는 WSL/Powershell에서 SSH 접속 후)에서 실행하는 것을 전제로 합니다.

환경: Ubuntu 22.04 (로컬 또는 원격 서버)


2. PostgreSQL 설치하기

2.1 호스트 머신에 직접 설치 (우분투 22.04)

기본 APT 저장소를 사용해 설치하는 방법입니다.

1) 패키지 목록 업데이트 및 PostgreSQL 설치:

sudo apt update
sudo apt install -y postgresql postgresql-contrib

2) 서비스 상태 확인 및 시작/정지

sudo systemctl status postgresql
sudo systemctl start postgresql
sudo systemctl enable postgresql

3) postgres 시스템 계정으로 전환하여 psql 사용

sudo -i -u postgres
psql
\q  # 종료

기본적으로 설치 시 postgres라는 슈퍼유저(시스템 계정)가 생성됩니다. 추가 사용자와 데이터베이스는 아래에서 설명합니다.

2.2 도커(Docker) 이용해서 셋팅 (권장)

도커를 사용하면 로컬 환경에 영향을 주지 않고 빠르게 PostgreSQL을 띄울 수 있습니다.

1) 기본 컨테이너 실행 (예: Postgres 18)

docker run --name pg-local -e POSTGRES_USER=myuser -e POSTGRES_PASSWORD=mypassword -e POSTGRES_DB=mydb -p 5432:5432 -d postgres:18

설명:

  • --name pg-local: 컨테이너 이름
  • -e POSTGRES_USER: 초기 DB 사용자 이름
  • -e POSTGRES_PASSWORD: 해당 사용자의 비밀번호
  • -e POSTGRES_DB: 생성할 기본 데이터베이스
  • -p 5432:5432: 호스트 포트와 컨테이너 포트 매핑

2) 실행 중인 컨테이너 접속 (bash)

docker exec -it pg-local bash
psql -U myuser -d mydb

컨테이너를 중지하거나 제거하려면 docker stop / docker rm을 사용하세요.


3. 접속 및 기본 명령어

3.1 psql로 데이터베이스 접속

psql은 PostgreSQL의 대화형 터미널 클라이언트입니다. 접속 예시는 아래와 같습니다.

# 로컬 소켓(같은 머신의 postgres 사용자로 접속)
sudo -i -u postgres psql

# 특정 사용자/데이터베이스로 접속 (비밀번호 입력)
psql -h localhost -p 5432 -U myuser -d mydb

# 비밀번호를 묻도록 강제하려면 -W 사용
psql -h 127.0.0.1 -U myuser -d mydb -W

psql 주요 옵션 설명:

  • -h, --host=HOSTNAME: 접속할 호스트(로컬 소켓 대신 TCP 접속 시 사용)
  • -p, --port=PORT: 포트 (기본 5432)
  • -U, --username=USERNAME: 데이터베이스 사용자
  • -d, --dbname=DBNAME: 접속할 데이터베이스
  • -W: 비밀번호 프롬프트 강제
  • -c 'SQL': 명령행에서 SQL 실행 후 종료 (예: psql -U user -d db -c "SELECT 1;")

3.2 psql 내에서 유용한 메타 커맨드

psql은 \로 시작하는 메타 명령어를 제공합니다. 이들은 SQL이 아니라 클라이언트 명령입니다.

  • \q : psql 종료
  • \? : 메타커맨드 도움말
  • \l 또는 \list : 데이터베이스 목록
  • \c dbname : 다른 데이터베이스로 연결

3.3 \dt 명령어: 테이블 목록 조회

데이터베이스 내 테이블 목록과 스키마/소유자/타입 등을 빠르게 확인할 때 사용합니다.

예시:

-- psql 접속 후
\dt

-- 특정 스키마의 테이블만 보고 싶을 때
\dt public.*

출력 예시 컬럼: Schema | Name | Type | Owner 등으로 표시됩니다.

설명(초보자용): \dt는 현재 연결된 데이터베이스의 ‘관계(테이블)’ 목록을 보여줍니다. 뷰(view)나 인덱스 등 다른 객체를 보려면 \dv, \di 등을 사용합니다.

3.4 \d 명령어: 특정 테이블 구조 보기

테이블 구조(칼럼, 타입, 제약조건 등)를 확인하려면 \d table_name을 사용합니다.

예시:

\d users

-- 테이블이 없는 경우 정확한 스키마를 포함해서 조회
\d public.users

출력 예시 항목: 컬럼 이름, 데이터 타입, NULL 허용 여부, 기본값, 인덱스 및 외래키 정보 등이 표시됩니다.

설명(초보자용): \d는 테이블(또는 인덱스/시퀀스 등 다른 객체)의 상세한 메타데이터를 보여주기 때문에, 테이블 설계를 이해하거나 디버깅할 때 매우 유용합니다.


참고자료

  • https://www.postgresql.org/docs/current/tutorial-start.html
  • https://www.postgresql.org/docs/current/app-psql.html
  • https://hub.docker.com/_/postgres
  • Ubuntu: https://help.ubuntu.com/community/PostgreSQL

댓글남기기