개발 블로그

발행: 2022/09/30수정: 2022/09/30

오라클 클라우드에 NestJS와 PostgreSQL DB 배포하기 3

오라클 리눅스에 PostgreSQL 설치, 접속

🚨 오라클 리눅스 9를 사용합니다. 버전 8이하와 차이가 있습니다.

목차

A. 설치

오라클 리눅스에서 사용가능한 PostgreSQL 버전에 제한이 있으니 시작하기 전에 확인해야 된다.

  • postgresql
sudo dnf install postgresql
  • postgresql-server
sudo dnf install postgresql-server

B. 설정

B0. 방화벽 설정

외부에서 DB에 접속하려면 방화벽을 열어야 합니다.

[[2 오라클 리눅스 설정]]에서 방화벽 설정을 참고하세요.

B1. DB 시작

초기화, 시작, 활성화를 실행한다.

초기화

sudo postgresql-setup --initdb

설정 삭제

  • 만약 문제가 있다면 data 삭제를 하고 여기부터 다시 시작한다.
sudo rm -rf /var/lib/pgsql/data

시작

sudo systemctl start postgresql

재시작

sudo systemctl restart postgresql

활성화

sudo systemctl enable postgresql

상태확인

sudo systemctl status postgresql
  • 출력
● postgresql.service - PostgreSQL database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
     Active: active (running) since Mon 2022-09-26 18:51:11 KST; 7min ago
   Main PID: 40084 (postmaster)
      Tasks: 8 (limit: 150140)
     Memory: 17.7M
        CPU: 127ms
     CGroup: /system.slice/postgresql.service
             ├─40084 /usr/bin/postmaster -D /var/lib/pgsql/data
             ├─40085 "postgres: logger "
             ├─40087 "postgres: checkpointer "
             ├─40088 "postgres: background writer "
             ├─40089 "postgres: walwriter "
             ├─40090 "postgres: autovacuum launcher "
             ├─40091 "postgres: stats collector "
             └─40092 "postgres: logical replication launcher "

Sep 26 18:51:11 instance systemd[1]: Starting PostgreSQL database server...
Sep 26 18:51:11 instance postmaster[40084]: 2022-09-26 18:51:11.208 KST [40084] LOG:  redirecting log output to logging collector process
Sep 26 18:51:11 instance postmaster[40084]: 2022-09-26 18:51:11.208 KST [40084] HINT:  Future log output will appear in directory "log".
Sep 26 18:51:11 instance systemd[1]: Started PostgreSQL database server.

PostgreSQL의 포트 확인

  • 기본 포트 : 5432
ss -antpl | grep 5432
  • 출력
LISTEN 0      244             127.0.0.1:5432       0.0.0.0:*
LISTEN 0      244                 [::1]:5432          [::]:*

B2. DB 설정

B2-1. postgresql.conf

postgresql.conf를 텍스트 편집기로 엽니다.

sudo nano /var/lib/pgsql/data/postgresql.conf
모든 IP접속 대기하기

PostgreSQL 서버가 어떤 IP에서도 접속을 대기할 수 있도록 합니다. listen_addresses 를 찾아 아래처럼 바꾸고 저장합니다.

listen_addresses = '*'

B2-2. pg_hba.conf

postgresql.conf를 텍스트 편집기로 엽니다.

sudo nano /var/lib/pgsql/data/pg_hba.conf
접속 허용 IP 등록

아래 같은 형식으로 IP를 추가합니다. 접속할 컴퓨터(프론트엔드 서버)의 IP를 입력합니다.

host all all xxx.xxx.xxx.xxx/32 md5

PostgreSQL 설치, 접속_01

B3. DB 및 계정 만들기

B3-1. 기본 계정 비밀번호 설정

  • PostgreSQL에 사용자 postgres로 로그인
sudo su - postgres
  • postgres에 비밀번호 설정
psql -c "alter user postgres with password 'securepassword'"
  • 나가기
exit

B3-2. DB, 사용자 계정 생성

  • 다음 커맨드로 PostgreSQL shell에 로그인 후 진행한다.
sudo -u postgres psql
  • DB 생성
create database 이름;
  • 사용자 계정 생성
create user 이름 with password '비밀번호';
  • 인코딩/트랜잭션 처리방법 설정
alter role 사용자이름 set client_encoding to 'utf8';
alter role 사용자이름 set default_transaction_isolation to 'read committed';
  • 사용자에게 DB의 모든 사용권한 부여
grant all privileges on database DB이름 to 사용자이름;

B3-3. 명령어

  • 사용자 목록
\du
  • db 목록
\l
  • db 지우기
DROP DATABASE db이름
  • 사용자 지우기
DROP USER 사용자이름

C. 접속

C1. 외부접속

postico를 사용해 외부 접속합니다.

PostgreSQL 설치, 접속_02

항목 내용
Host 오라클 클라우드 인스턴스 공용 IP 주소
Port DB 포트(기본 5432)
Database DB이름
User 사용자 계정 이름
Password 사용자 계정 비밀번호

C2. 내부접속

오라클 리눅스 내부에서 로컬호스트로 접속하려면 Host만 localhost로 바꾸면 된다.


참조