티스토리 뷰

OS

[Linux] PostgreSQL DB 설치

해구름 2026. 10. 2. 11:50
반응형

하모니카 8.0 (우분투 24 기반)에서 PostgreSQL 18 설치 방법

여기서는 하모니카 8.0 (우분투 24 기반)에서 PostgreSQL 8을 설치하고 기본 설정을 하는 방법을 단계별로 정리합니다.

1. PostgreSQL 설치 확인

서버에 PostgreSQL이 이미 설치되어 있는지 확인하려면 psql --version 명령을 실행하여 명령이 실행되는지 확인하는 방법을 사용합니다. PostgreSQL이 설치되지 않았다면 명령어를 찾을 수 없다는 오류가 날 것입니다.

psql --version

PostgreSQL이 설치되어 있는지 APT를 검색하는 방법도 있습니다. 명령을 실행했을 때 내역이 나타난다면 이미 PostgreSQL패키지가 설치되어 있을 가능성이 높습니다.

apt list --installed | grep postgresql

PostgreSQL 서비스가 이미 실행 중인지 확인하려면 아래 명령어를 사용하세요.

sudo systemctl status postgresql

PostgreSQL 서비스가 이미 실행 중이라면 아래와 같이 나타나며, 실행 중이지 않다면 아무것도 나타나지 않습니다.

> systemctl status postgresql
    ● postgresql.service - PostgreSQL RDBMS
          Loaded: loaded (preset: enabled)
          Active: active (exited)

2. 기존 DB 파일 확인

PostgreSQL 데이터베이스 파일은 보통 /var/lib/postgresql/ 아래에 저장됩니다. 설치 전에 기존 데이터가 있는지 확인하시고 필요한 조치를 취해주세요.

ls /var/lib/postgresql/

3. 리눅스 APT 저장소에 PostgreSQL 저장소 정보 추가

하모니카는 우분투 24기반입니다. 하모니카의 APT는 기본적으로 PostgreSQL 16을 지원합니다. 최신 버전인 PostgreSQL 18을 설치하려면 PostgreSQL 공식 APT 저장소 정보를 APT 목록에 추가해주어야 합니다.

1) 보안 연결 등 필수 패키지 설치

보안 연결 및 키 다운로드를 위해 필요한 패키지를 먼저 준비합니다.

sudo apt update && sudo apt install -y curl ca-certificates gnupg
  • sudo apt update : 먼저 설치 가능한 패키지 목록을 최신으로 갱신합니다.
  • sudo apt install -y : 패키지를 설치하며, 설치 중 질문은 자동 YES로 처리합니다.
  • curl : HTTP/HTTPS 통신을 위한 패키지입니다.
  • ca-certificates : 인증서 검증을 위해 사용되는 CA(Certificate Authority) 인증서를 다운로드합니다.
  • gnupg : GnuPG(GPG : GNU Privacy Guard)는 패키지가 정말 신뢰할 수 있는지 검증하기 위해 사용하는 도구입니다.

2) PostgreSQL 공식 GPG 키 추가

APT가 패키지를 다운로드할 때는 다운받은 패키지가 위조되지 않았음을 검증하는 작업을 거칩니다. 과거에는 apt-key add 명령을 사용하여 APT가 신뢰하는 Key 목록을 이용했지만, 우분투 24.04부터는 apt-key add가 Deprecate 되었으며 보안이 강화된 새로운 GPG(GNU Privacy Guard) 방식을 사용합니다.

(1) 키 저장폴더 생성

KEY가 저장될 폴더를 생성합니다.

sudo install -d /usr/share/postgresql-common/pgdg
  • install -d : 디렉터리를 지정한 위치에 생성합니다.
  • /usr/share/postgresql-common/pgdg : PostgreSQL 저장소 키를 저장할 폴더를 생성합니다. 우분투 24.04부터는 패키지 검증을 위한 KEY를 /usr/share/keyrings/ 또는 /usr/share/패키지 식별자/ 같은 디렉터리에 키를 저장하고 sources.list에서 참조하는 방식을 사용합니다.

(2) GPG 키 다운로드 및 저장

PostgreSQL 저장소의 GPG 공개키를 다운로드합니다.

sudo curl --fail -o "/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc" "https://www.postgresql.org/media/keys/ACCC4CF8.asc"
  • sudo curl --fail -o "파일을 저장할 경로" "다운로드할 URL" : curl을 통해 지정한 URL에서 파일을 다운로드합니다. --fail은 오류가 발생할 경우 실패로 처리하며, -o는 output을 의미하며 다운로드된 파일이 저장될 경로를 지정합니다.
  • https://www.postgresql.org/media/keys/ACCC4CF8.asc : PostgreSQL 저장소의 GPG 공개키 주소입니다.

3) APT 저장소 리스트 등록

PostgreSQL 공식 APT 저장소를 리눅스 운영체제의 APT 저장소 리스트에 추가합니다.

sudo sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] http://apt.postgresql.org/pub/repos/apt noble-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
  • sudo sh -c -c 다음에 이어지는 문자열 전체를 sudo 권한의 쉘로 실행합니다.
  • echo "A" > B : A 문자열을 B파일로 저장합니다.
  • 위 명령을 실행하면 APT 저장소 리스트에 PostgreSQL 공식 저장소 정보를 추가하게 됩니다. 하모니카 8.0 운영체제는 우분투 24를 기반으로 하므로 noble-pgdg 저장소를 사용하였습니다.

4. PostgreSQL 설치 시작

1) 패키지 목록 업데이트

최신 패키지 정보를 불러오기 위해 sudo apt update를 실행합니다.

sudo apt update

2) PostgreSQL 설치

PostgreSQL 서버와 클라이언트, 확장 모듈을 설치합니다.

sudo apt install -y postgresql-18 postgresql-contrib-18
  • postgresql-18 : 실제 SQL 서버 데몬
  • postgresql-contrib-18 : PostgreSQL 확장 모듈

3) 설치 후 서비스 확인

PostgreSQL DB 버전이 정상적으로 나타난다면 설치가 잘 진행된 것입니다.

psql --version

PostgreSQL가 정상적으로 실행 중인지 아래 명령어로 확인하실 수 있습니다.

sudo systemctl status postgresql
  • systemctl : systemd control의 약자로 systemd로 관리되는 서비스들을 Control하는 명령입니다. status로 서비스 상태를 확인하거나, start, stop, restart, enable, disable 등으로 서비스를 시작, 정지할 수 있습니다.
  • systemctl status postgresql : PostgreSQL 서비스 상태를 조회합니다. 실행 후 아래와 같이 나타난다면 정상 실행 중입니다.
    > systemctl status postgresql
          ● postgresql.service - PostgreSQL RDBMS
                Loaded: loaded (preset: enabled)
                Active: active (exited)

4. 초기 설정

1) Cluster 생성 확인

PostgreSQL 클러스터가 실행 중인지 확인합니다. 아래 명령을 일단 실행해보세요.

pg_lsclusters

18 main 5432 online 형태로 나타난다면 PostgreSQL 18의 main Cluster가 5432 포트로 정상 생성되었고 실행된 상태입니다. 만약 아무런 내역이 나타나지 않는다면 아래 명령으로 Cluster를 생성하시면 됩니다.

sudo pg_createcluster 18 main --start

위 명령 실행 후 pg_lsclusters를 다시 실행해서 클러스터를 확인해주세요.

2) 관리자 계정

PostgreSQL이 설치되면 리눅스에 postgres 계정이 추가됩니다. postgres는 PostgreSQL의 기본 슈퍼유저는 계정입니다. 다음 명령으로 PostgreSQL에 비밀번호 없이 접속할 수 있습니다.

sudo -u postgres psql
  • sudo -u : -u 사용자명을 사용하면 해당 사용자명으로 명령을 실행합니다.
  • sudo -u postgres psql : psql은 PostgreSQL 접속 클라이언트 프로그램입니다. 즉 postgres 슈퍼유저 계정으로 psql 프로그램을 실행합니다.

3) 비밀번호 설정

보안을 위해 postgres 계정에 비밀번호를 설정합니다.

ALTER USER postgres WITH ENCRYPTED PASSWORD '비밀번호';

비밀번호가 잘 적용되었는지 확인하기 위해 \q 명령을 입력한 후, psql -U postgres -h 127.0.0.1 -W로 접속해봅시다.

4) 외부 접속 허용

  1. sudo nano 명령어를 통해 Nano 텍스트 편집기로 postgresql.conf 파일을 엽니다.
    sudo nano /etc/postgresql/18/main/postgresql.conf
  2. listen_addresses를 찾은 후 listen_addresses = '*'로 변경합니다.
    listen_addresses = '*'
    (주의) 테스트 목적이 아닌 경우 반드시 특정 IP만 허용해주세요. 상용 서버에서 listen_addresses = '*'로 설정하면, 외부에서 끊임없이 무작위의 ID/PW로 침입을 시도하게 됩니다.
  3. 키보드에서 Ctrl + O 누르고 Enter를 눌러 파일을 저장 후, Ctrl + X를 눌러 Nano 편집기를 종료합니다.
  4. pg_hba.conf 파일을 Nano 편집기로 열어주세요.
    sudo nano /etc/postgresql/18/main/pg_hba.conf
  5. 파일 맨 아래쪽(또는 적절한 위치)으로 이동 후, 아래와 같이 외부에서 비밀번호로 접속할 수 있게 설정을 추가합니다.
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    host    all             all             0.0.0.0/0               scram-sha-256
    • (TYPE) host : TCP/IP를 통한 원격 접속을 의미합니다.
    • (DATABASE) all : 모든 데이터베이스에 적용합니다.
    • (USER) all : 모든 사용자를 허용합니다.
    • (ADDRESS) 0.0.0.0/0 : 모든 대역의 IP 허용합니다 (/0은 모든 주소를 의미)
    • (METHOD) scram-sha-256 : 비밀번호 인증 방식입니다. 비밀번호 인증 방식은 scram-sha-256을 주로 권장합니다.
  6. 키보드에서 Ctrl + O 누르고 Enter를 눌러 파일을 저장 후, Ctrl + X를 눌러 Nano 편집기를 종료합니다.
  7. 설정을 바꿨다면 반드시 PostgreSQL 서비스를 재시작해야 적용됩니다.
    sudo systemctl restart postgresql
  8. 외부에서 접속하려면 포트를 허용해주어야 합니다. PostgreSQL DB의 기본 포트는 5432입니다. 우분투 방화벽(UFW)에서 포트를 열어주어야합니다.
    sudo ufw allow 5432/tcp
    sudo ufw reload
    클라우드 서버(AWS, Azure 등)를 이용한다면, 해당 클라우드 서비스에서 방화벽을 열어주어야 합니다.

5. DB 생성 등 테스트

1) 계정 로그인

다음 명령을 통해 PostgreSQL에 접속해 봅시다.

psql -h <서버주소> -p 5432 -U <사용자명> -d <접속DB>
  • <서버주소>는 실제 DB의 주소 (예: 192.168.0.10)로 대체합니다.
  • <사용자명>는 생성한 사용자 계정의 이름 (예: myuser)으로 대체합니다.
  • <접속DB>는 접속할 DB이름 (예: mydb)을 입력합니다.
  • 포트가 기본값 5432가 아닌 경우 해당 포트번호를 입력해야합니다.

2) GUI 소프트웨어 설치

3) 데이터베이스 생성

이제 간단한 DB를 생성해봅시다. DB를 생성하는 쉘 명령은 다음과 같습니다.

sudo -u postgres createdb testdb

SQL DDL로 DB를 생성하려면 psql내부에서 아래처럼 입력하세요.

CREATE DATABASE testdb;

4) 사용자 생성 및 권한 부여

일반 사용자 계정을 생성하고, 해당 사용자에게 로그인 등 필요한 권한을 부여합니다. 아래는 사용자를 생성하는 쉘 명령어입니다.

createuser myuser --pwprompt --interactive

쉘이 아닌 psql내부에서 사용자를 생성하려면 아래 SQL을 실행하세요.

CREATE USER myuser WITH PASSWORD '비밀번호';

사용자 생성 후 사용자에게 권한을 부여합니다.

ALTER ROLE myuser WITH LOGIN;
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;

6. PostgreSQL 서비스 실행 및 중단

PostgreSQL 서버를 재시작하거나, 중단, 다시 실행하려면 아래 명령어를 이용하세요.

sudo systemctl restart postgresql   # 서버 재시작
sudo systemctl stop postgresql      # 서버 중단
sudo systemctl start postgresql     # 서버 실행
댓글