[DB-007][중급] PostgreSQL 설치하고 상태 확인하기 > IT 기술 공유

본문 바로가기
사이트 내 전체검색

IT 기술 공유

[DB-007][중급] PostgreSQL 설치하고 상태 확인하기

페이지 정보

profile_image
작성자 기술팀장
댓글 0건 조회 138회 작성일 26-09-02 15:37

본문

[이번 수업]
관계형 데이터베이스 원리를 배웠다면 실제 서버를 설치하고 상태를 확인할 차례입니다. 이번에는 PostgreSQL의 안정 버전을 로컬에 설치한 뒤 `psql`로 접속해 데이터베이스와 점검용 표를 만듭니다.

[선수지식]
DB-001의 표·키, DB-002의 기본 SQL, DB-005의 인덱스 개념을 알고 터미널이나 PowerShell을 실행할 수 있어야 합니다.

[학습목표]
1. PostgreSQL 서버와 `psql` 클라이언트를 구분한다.
2. 서버 준비 상태와 접속 정보를 확인한다.
3. 데이터베이스·표를 만들고 안전하게 접속을 끝낸다.

[핵심개념]
PostgreSQL 서버는 데이터를 저장하고 SQL을 실행하는 프로세스입니다. `psql`은 서버에 명령을 보내는 터미널 클라이언트입니다. `psql --version`이 보여도 서버가 실행 중이라는 뜻은 아니므로 `pg_isready`로 별도 확인합니다.

클러스터(cluster)는 한 서버 프로세스가 관리하는 데이터베이스 묶음입니다. 데이터베이스 안에는 표와 인덱스 같은 객체가 있습니다. 접속할 때는 호스트·포트·사용자·데이터베이스 이름이 필요하며 기본 포트는 5432입니다.

공식 다운로드 페이지에서 운영체제를 고르고 current로 표시된 안정 버전을 설치합니다. beta·RC는 정식 출시 전 시험판이므로 이 실습 기준에서 제외합니다. 설치할 때 정한 관리자 비밀번호는 코드나 게시글에 적지 마세요.

[따라하기]
공식 페이지 `https://www.postgresql.org/download/`에서 Windows·macOS·Linux 항목을 선택해 안내대로 설치합니다. Linux는 배포판 패키지 관리자가 권장됩니다. 설치 뒤 새 터미널을 열고 확인합니다.

```text
psql --version
pg_isready -h localhost -p 5432
```

첫 명령은 `psql (PostgreSQL) 18.x`처럼 설치 버전을 표시합니다. 둘째 명령의 예상 결과는 `localhost:5432 - accepting connections`입니다. 응답이 없으면 서버 서비스가 시작됐는지, 설치 포트가 5432인지 확인합니다.

관리자 사용자가 `postgres`인 기본 설치를 기준으로 실습 데이터베이스를 만듭니다. 비밀번호를 요구하면 설치할 때 정한 값을 직접 입력합니다.

```text
createdb -h localhost -U postgres lesson_db
psql -h localhost -U postgres -d lesson_db
```

이미 `lesson_db`가 있다는 오류가 나오면 생성 명령은 건너뛰고 접속합니다. Windows에서 명령을 찾지 못하면 설치 메뉴의 SQL Shell을 열거나 PostgreSQL의 `bin` 폴더를 PATH에 추가합니다. macOS·Linux도 설치 방식에 따라 `bin` 경로 또는 서비스 시작 명령이 다르므로 공식 OS별 안내를 따릅니다.

`lesson_db=>` 프롬프트가 보이면 아래를 한 줄씩 입력합니다. SQL 끝에는 세미콜론이 필요하지만 `\`로 시작하는 `psql` 명령에는 붙이지 않습니다.

```sql
\conninfo

CREATE TABLE IF NOT EXISTS service_check (
    id integer PRIMARY KEY,
    message text NOT NULL,
    checked_at timestamptz NOT NULL DEFAULT now()
);

INSERT INTO service_check (id, message)
VALUES (1, '정상')
ON CONFLICT (id) DO NOTHING;

SELECT id, message FROM service_check ORDER BY id;
\dt
\q
```

SELECT 예상 결과는 `1 | 정상` 한 행입니다. `\conninfo`는 현재 서버·포트·사용자·데이터베이스를, `\dt`는 표 목록을 보여주고 `\q`는 접속을 종료합니다.

[흔한 실수]
- `psql` 설치와 서버 실행을 같은 것으로 생각한다.
- 호스트·포트·사용자·데이터베이스 이름 중 하나를 빠뜨린다.
- SQL 세미콜론과 `psql`의 역슬래시 명령을 혼동한다.
- 시험판을 운영용 안정 버전처럼 설치한다.
- 관리자 계정을 애플리케이션 접속 계정으로 계속 사용한다.

[보안 주의]
실습 서버는 본인 PC의 localhost에서만 사용하고 5432 포트를 인터넷에 공개하지 않습니다. `listen_addresses`를 무조건 `*`로 바꾸지 마세요. 실제 앱에는 별도 로그인 역할을 만들고 필요한 데이터베이스 권한만 부여합니다. 비밀번호를 명령줄·소스·버전 관리에 남기지 말고 보안 저장소를 사용합니다.

[직접 해볼 과제]
`service_check`에 id 2와 메시지 `점검 완료`를 추가하고 두 행을 조회하세요. `\conninfo` 결과에서 데이터베이스·사용자·포트를 찾아 메모합니다.

[확인문제]
1. `psql`과 PostgreSQL 서버의 역할은 어떻게 다른가요?
2. 서버가 연결을 받을 준비가 됐는지 어떤 명령으로 확인하나요?
3. 애플리케이션이 관리자 계정을 계속 쓰면 왜 위험한가요?

[다음 학습]
다음 OS-007에서는 CPU·메모리·디스크 상태를 확인해 서버 자원 문제를 찾는 기초를 배웁니다.

[공식 참고 자료]
- PostgreSQL 공식 다운로드: https://www.postgresql.org/download/
- psql 공식 문서: https://www.postgresql.org/docs/current/app-psql.html
- pg_isready 공식 문서: https://www.postgresql.org/docs/current/app-pg-isready.html
- 접속 설정 공식 문서: https://www.postgresql.org/docs/current/runtime-config-connection.html

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

접속자집계

오늘
4,265
어제
6,862
최대
16,772
전체
770,216
Copyright © 소유하신 도메인. All rights reserved.