Database/PostgreSQL

PostgreSQL 설치

꼰용 2026. 6. 12. 13:41

Rocky Linux 9 환경에서 안정적이고 강력한 오픈소스 관계형 데이터베이스인 PostgreSQL을 설치하고 초기 설정하는 벙법을 알아보겠습니다. 이 글에서는 PostgreSQL 공식 저장소(Repository)를 추가하여 최신 버전을 설치하는 과정을 다룹니다.

설치 환경

시스템 업데이트 및 필수 패키지 설치

설치를 시작하기 전, 시스템의 패키지 저장소를 최신 상태로 업데이트합니다.

 
꼰용@localhost:~
 
 
 
[root@localhost ~]# dnf update -y

 

 

주의점

dnf update -y를 실행하면 현재 릴리스 되어있는 Rocky Linux9.x의 최신 마이너 버전(ex: 9.6 또는 9.7 등)으로 OS 커널과 패키지 모두가 버전업 됩니다. OS마이너 버전 고정하고 보안 패치 또는 패키지설치만 진행하고 싶을때 클릭

 

PostgreSQL 공식 RPM 저장소 추가

Rocky Linux 9의 기본 저장소에도 PostgreSQL이 포함되어 있지만, 최신 버전을 사용하기 위해 공식 PostgreSQL RPM 저장소를 추가하는 것이 좋습니다.

 
꼰용@localhost:~
 
 
 
[root@localhost ~]# dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

 

내장 PostgreSQL 모듈 비활성화

Rocky Linux의 기본 appstream 저장소에 있는 내장 PostgreSQL 모듈과 충돌하는 것을 방지하기 위해 내장 모듈을 비활성화 합니다.

 
꼰용@localhost:~
 
 
 
[root@localhost ~]# dnf -qy module disable postgresql

 

PostgreSQL 설치

PostgreSQL 17 서버 및 클라이언트 설치합니다.

 
꼰용@localhost:~
 
 
 
[root@localhost ~]# dnf install -y postgresql17-server postgresql17-contrib

 

경로 설정 및 권한 부여

PostgreSQL 기본 경로가 아닌 특정 경로를 사용할 예정입니다. 이 과정을 제외하고 싶으시면 바로 데이터베이스 초기화(Initdb)를 하시면 됩니다.

 
꼰용@localhost:~
 
 
 
[root@localhost ~]# mkdir /pgdata 
 # 소유권을 postgres사용자로 변경
[root@localhost ~]# chown -R postgres:postgres /pgdata
 # 권한 설정(DB보안상 700 권한 필수)
[root@localhost ~]# chmod 700 /pgdata

 

서비스 경로 변경

Rocky Linux에서는 systemd 서비스를 통해 DB를 관리합니다. 기본값인 /var/lib/pgsql/버전/data 대신 /pgdata를 바라보도록 설정 파일을 수정합니다.

 
꼰용@localhost:~
 
 
 
 # 소유권을 postgres사용자로 변경
[root@localhost ~]# systemctl edit postgresql-17
 # 또는 vi 에디터로 열고 화면이 열리면 아래 내용을 입력/저장 
[Service]
Environment=PGDATA=/pgdata

 

저장이 안될 경우

가끔 저장이 되지 않는 경우가 있습니다 그럴 경우에는 직접 파일을 생성해서 진행합니다.

 
꼰용@localhost:~
 
 
 
 저장실패에 대한 메세지
Editing "/etc/systemd/system/postgresql-17.service.d/override.conf" canceled: temporary file is empty. 
 # 설정 디렉토리 생성 (이미 있을 수도 있지만 확인차)
[root@localhost ~]# mkdir -p /etc/systemd/system/postgresql-17.service.d/
 #  직접 파일을 생성하고 내용 작성(전체 그대로 복붙하고 엔터)
[root@localhost ~]# tee /etc/systemd/system/postgresql-17.service.d/override.conf <<EOF
[Service]
Environment=PGDATA=/pgdata
EOF

 # 시스템 유닛 설정 리로드
[root@localhost ~]# systemctl daemon-reload
 

 

DB초기화 및 실행

데이터베이스가 저장될 디렉토리와 시스템 테이블을 초기화해야합니다. 이 과정을 거쳐야 서비스 가동이 가능합니다.

 
꼰용@localhost:~
 
 
 
 # DB 초기화 (설정한 PGDATA 경로에 파일들이 생성됨)
[root@localhost ~]# /usr/pgsql-17/bin/postgresql-17-setup initdb
 # 서비스 시작 및 부팅 시 자동 실행 설정 
[root@localhost ~]# systemctl enable --now postgresql-17
 # 서비스 상태 확인 
[root@localhost ~]# systemctl status postgresql-17

 

외부 접속 허용(필요시)

외부(개발PC등)에서 접속해야 한다면 아래 설정도 필요합니다.

 
꼰용@localhost:~
 
 
 
 # 모든 IP에서 접속 허용하도록 수정
[root@localhost ~]# vi /pgdata/postgresql.conf
 # listen_addresses = '*'  >-- 이 부분의 주석을 풀고 저장

[root@localhost ~]# vi /pgdata/pg_hba.conf
 # 파일 맨 아래에 접속 허용할 IP 대역 추가(없을시)
 host   all   all   0.0.0.0/0     scram-sha-256

 # 방화벽 오픈
[root@localhost ~]# firewall-cmd --permanent --add-service=postgresql
[root@localhost ~]# firewall-cmd --reload

 

postgres계정으로 systemctl 사용

외부(개발PC등)에서 접속해야 한다면 아래 설정도 필요합니다.

 
꼰용@localhost:~
 
 
 
[root@localhost ~]# visudo
 # 맨 아래 추가 및 저장(상관은 없음) Shift + g(이동 단축키)
 # 추가
postgres ALL=(ALL) NOPASSWD: /usr/bin/systemctl start postgresql-17.service, /usr/bin/systemctl stop postgresql-17.service, /usr/bin/systemctl restart postgresql-17.service


 # postgres계정으로 시도
[root@localhost ~]# su - postgres
[postgres@localhost ~]$ sudo systemctl restart postgresql-17.service
 # 혹시 안된다면 reboot 또는 postgres계정 다시 접속 시도


 

PostgreSQL 접속 테스트

설정이 끝났으면 접속테스트를 진행합니다. PostgreSQL은 설치시 자동으로 postgres라는 시스템 사용자를 생성합니다. 이 계정으로 전환하여 데이터베이스에 접속할 수 있습니다.

 
꼰용@localhost:~
 
 
 
[root@localhost ~]# su - postgres
[postgres@localhost ~] psql

-- 버전 확인 예시
postgres=# SELECT version();
                            version                                                 
------------------------------------------------------------------
 PostgreSQL 17.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.4.1 20230605 (Red Hat 11.4.1-2), 64-bit
(1 row)

 

 

 

'Database > PostgreSQL' 카테고리의 다른 글

PostgreSQL  (0) 2026.06.04