본문으로 건너뛰기

2.5 클라이언트 도구

PostgreSQL 서버에 접속해 SQL을 보내고 결과를 받는 클라이언트는 종류가 많습니다. 매일 쓰는 CLI부터 GUI, 애플리케이션 드라이버까지 갈래가 나뉩니다.

CLI​

psql — 공식 표준​

PostgreSQL과 함께 배포되는 공식 CLI. 거의 모든 운영자가 매일 씁니다.

# 기본 접속
psql -h db.example.com -U app_user -d app_main

# 환경변수 사용
export PGHOST=db.example.com PGUSER=app_user PGDATABASE=app_main
psql

# 접속 문자열
psql 'postgresql://app_user:secret@db.example.com:5432/app_main?sslmode=require'

자주 쓰는 메타 명령:

명령의미
\l데이터베이스 목록
\c <db>다른 DB로 전환 (새 연결)
\dt, \di, \dv, \df테이블·인덱스·뷰·함수 목록
\d <table>테이블 구조
\d+ <table>자세히 — 크기·통계·storage 모드 포함
\dn, \du스키마·역할 목록
\x세로(extended) 출력 토글
\timing매 쿼리 실행 시간 표시
\watch <초>동일 쿼리 반복
\copy <table> FROM <file>로컬 파일에서 COPY (서버 측 COPY와 달리 클라이언트 권한으로)
\set변수·옵션 표시
\?메타 명령 도움말
\h SELECTSQL 문법 도움말
\q종료

~/.psqlrc에 자주 쓰는 설정을 자동 적용합니다.

\set QUIET 1
\pset null '∅'
\pset border 2
\pset linestyle unicode
\x auto
\timing on
\set HISTFILE ~/.psql_history-:HOST
\set PROMPT1 '%[%033[1;33m%]%n@%/%[%033[0m%]%R%# '
\unset QUIET

pgcli — autocomplete CLI​

Python 기반입니다. SQL 키워드·테이블·컬럼 자동완성과 syntax highlighting을 제공합니다.

pip install pgcli # 또는 brew install pgcli, dnf install pgcli
pgcli -h db.example.com -U app_user -d app_main
장점단점
강력한 자동완성psql과 호환 안 되는 메타 명령 일부
다중 줄 편집psql의 모든 기능을 따라가진 않음
컬럼명 추천큰 스키마에서 시작 지연

운영 콘솔에서는 psql, 개발·탐색에서는 pgcli라는 패턴이 흔합니다.

usql — 다중 DB CLI​

PostgreSQL뿐 아니라 MySQL·Oracle·SQLite 등 여러 DB에 같은 인터페이스로 접속. 멀티 DB 운영에서 유용합니다.

GUI​

DBeaver​

오픈소스. 거의 모든 데이터베이스 지원합니다. ER 다이어그램·쿼리 빌더 포함합니다.

장점단점
무료, 멀티 DB일부 PG 전용 기능(EXPLAIN ANALYZE UI) 약함
ER 다이어그램 자동 생성큰 스키마에서 메모리 사용량 큼

pgAdmin 4​

PostgreSQL 공식 GUI. 웹 UI로도 동작합니다.

장점단점
PostgreSQL 모든 객체 트리UI 반응성이 빠르지 않음
EXPLAIN 그래픽 뷰멀티 DB는 못 다룸

TablePlus / DataGrip / Postico​

상용 또는 부분 무료. UX 품질이 높지만 라이선스 비용 또는 기능 제한이 있습니다.

도구라이선스메모
TablePlus상용 (제한 무료)macOS·Windows 모두 빠름
DataGrip (JetBrains)상용IDE 통합, refactor 강력
Postico상용macOS 전용, 단순·깔끔

드라이버​

코드에서 PostgreSQL을 쓸 때 사용하는 라이브러리.

언어추천 드라이버비고
Pythonpsycopg (v3)비동기 지원, psycopg2의 후속
Node.jspg (node-postgres)표준
JavapgJDBC공식 JDBC
Gopgxdatabase/sql 인터페이스와 자체 인터페이스 모두
Rusttokio-postgres, sqlxasync-first
.NETNpgsql공식 ADO.NET 드라이버
Rubypg gem공식

대부분 wire 프로토콜 v3를 구현해 PostgreSQL 호환 DB(Yugabyte, CockroachDB)에도 그대로 붙습니다.

~/.pgpass — 비밀번호 자동 입력​

매번 비밀번호를 입력하기 번거로우면 ~/.pgpass에 미리 둘 수 있습니다.

# hostname:port:database:username:password
db.example.com:5432:app_main:app_user:my_secret_password
*:5432:*:replicator:repl_secret
chmod 600 ~/.pgpass # 권한 0600 아니면 무시됨

PGPASSFILE 환경변수로 위치도 바꿀 수 있습니다.

TLS·인증서 검증​

운영 환경에서 평문 접속은 금지합니다. 보통 다음 중 하나로 강제합니다.

psql 'postgresql://user@host/db?sslmode=verify-full&sslrootcert=/etc/ssl/postgres-ca.pem'
sslmode의미
disable평문. 절대 운영 금지
prefer (기본)가능하면 SSL, 안 되면 평문
requireSSL 강제, 인증서 검증 안 함
verify-caCA 검증
verify-fullCA + 호스트명 검증. 운영 권장

자세한 인증서 관리는 Part IX 9.5에서 다룹니다.

도구 선택 요약​

노트

psql은 모든 도구의 공통 분모입니다. 운영 자동화 스크립트, CI 검증, 장애 대응 모두 결국 psql로 떨어집니다. 다른 도구와 같이 쓰더라도 psql 메타 명령(\d, \timing, \watch)은 꼭 익혀 두는 게 운영자의 기본 무장입니다.

정리​

운영의 표준 도구는 psql이고, 메타 명령과 ~/.psqlrc까지 익혀 두면 생산성 차이가 큽니다. 자동완성이 필요하면 pgcli, GUI가 필요하면 DBeaver·pgAdmin·DataGrip을 쓰고, 애플리케이션 코드에서는 언어별 공식 드라이버를 씁니다. 비밀번호는 권한 0600의 ~/.pgpass로 자동 입력하고, 운영 접속은 항상 sslmode=verify-full과 서버 인증서로 검증합니다.