설치
Bash
sudo apt install -y postgresql postgresql-contrib
# 최신 버전 (PostgreSQL 공식 APT)
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update && sudo apt install -y postgresql-16
sudo systemctl enable --now postgresql기본 접속
Bash
sudo -u postgres psql
# psql 내 명령어
\l -- 데이터베이스 목록
\c mydb -- 데이터베이스 전환
\dt -- 테이블 목록
\d users -- 테이블 구조
\du -- 사용자 목록
\q -- 종료사용자 및 데이터베이스 생성
SQL
CREATE USER myapp WITH PASSWORD 'strongpassword123!';
CREATE DATABASE myappdb OWNER myapp;
GRANT ALL PRIVILEGES ON DATABASE myappdb TO myapp;
GRANT ALL ON SCHEMA public TO myapp;
GRANT ALL ON ALL TABLES IN SCHEMA public TO myapp;
GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO myapp;postgresql.conf 주요 설정
INI
listen_addresses = '*' # 원격 접속 허용
max_connections = 100
shared_buffers = 256MB # RAM의 25% 권장
work_mem = 4MB
log_slow_query = 1000 # 1초 이상 쿼리 로그pg_hba.conf (접속 제어)
CODE
local all postgres peer
local all all md5
host myappdb myapp 10.0.0.0/24 scram-sha-256Bash
sudo systemctl reload postgresql백업과 복원
Bash
pg_dump -U myapp -h localhost myappdb > backup.sql
pg_dump -U myapp -h localhost -Fc myappdb > backup.dump
sudo -u postgres pg_dumpall > all_databases.sql
psql -U myapp -h localhost myappdb < backup.sql
pg_restore -U myapp -h localhost -d myappdb backup.dump모니터링 쿼리
SQL
-- 현재 연결 수
SELECT count(*) FROM pg_stat_activity;
-- 실행 중인 쿼리
SELECT pid, now() - query_start AS duration, query
FROM pg_stat_activity WHERE state = 'active';
-- 테이블 크기
SELECT relname, pg_size_pretty(pg_total_relation_size(relid))
FROM pg_stat_user_tables
ORDER BY pg_total_relation_size(relid) DESC;편집 안내 · Editorial Note
이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.
관련 공식 문서PostgreSQL 공식 문서 ↗
질문 & 답변 (Q&A)
이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.