Linux/CentOS Stream 9

Linux CentOS Stream 9 - PostgreSQL 14 Install 설치

Ryan's Tech Note 2023. 2. 17. 18:02

https://saju.choeum.com/pos/front/sjuF0101.do?ref=s_BwgZAV1CS2tVJUAFBwEHCjMAAAAAbUJXUg

 

처음 사주 - 인생 7포인트

2026년 성공하는 시기·성향·연애운·금전운·10년 운까지 한눈에

saju.choeum.com

 


 

현재 CentOS Stream 9 에서 dnf install postgresql 하면 13.* 버전이 내려오는데 postgresql 홈페이지에는 15.*버전까지 올라와 있다. 13버전은 좀 뒤쳐지는 것 같고, 15버전는 너무 일찍 도입하는 느낌이 있으므로, 14버전을 설치해 보도록 하겠다. Database는 dnf 로 자동 업데이트가 되지 않는 것이 좋다. 왜냐면 DB의 특성상 메이저 버전이 올라가 버리면 어떤 문제를 야기할지 알 수 없기 때문이고, 만약 그 영향으로 Data 가 오염되면 복구가 힘들다. 아래 참조의 좋은 외국의 설치 방법 링크를 찾았는데, 한번 따라해 보겠다.

 

현재 dnf 로 받을 수 있는 postgresql 목록 확인

dnf module list postgresql

 

Redhat 최신버전 Postgresql 설치 (현재 14버전이 내려온다)

dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

 

Default Postgresql 레파지토리는 비활성화 한다. 시간이 좀 많이 걸리는데, 절대 중단하지 말고 기다려라.

dnf -qy module disable postgresql

 

설치를 시작한다.

dnf install postgresql14-server -y

 

DB를 초기화 한다.

/usr/pgsql-14/bin/postgresql-14-setup initdb

 

DB를 기동한다. 자동 시작도 등록한다.

systemctl start postgresql-14
systemctl enable postgresql-14

 

잘 돌고 있나 확인하자.

systemctl status postgresql-14

 

5432포트로 Listen 하고 있는 것을 확인해보자.

ss -antpl | grep -i postmaster

 

psql 쉘을 실행한다. 방금 init 한 DB를 확인해보자.

sudo -u postgres psql

postgres-# \l
                                 데이터베이스 목록
   이름    |  소유주  | 인코딩 |   Collate   |    Ctype    |      액세스 권한
-----------+----------+--------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 |
 template0 | postgres | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 | =c/postgres          +
           |          |        |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 | =c/postgres          +
           |          |        |             |             | postgres=CTc/postgres
(3개 행)

 

버전을 확인해보자.

postgres=# SELECT version(); version ----------------------------------------------------------------------------------------------------------
PostgreSQL 14.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.3.1 20220421 (Red Hat 11.3.1-2), 64-bit (1개 행)

 

기본 계정 암호를 설정한다. 기본 계정은 postgres 이다.

postgres=# \password
Enter new password:
Enter it again:
postgres=# \q
exit

 

기본적으로는, 다른 IP 에서 DB접근을 못하게 되어 있다. WAS 등 다른 IP 에서도 DB를 접근할 수 있게 해보자. 주석을 풀고 '*' 로 수정한다. 만약 포트를 바꾸려면 아래 port 를 주석을 풀고 지정하면 된다.

vi /var/lib/pgsql/14/data/postgresql.conf

listen_addresses = '*'
port = 5432

 

한군데 더 바꿔야 한다. 아래 굵은 글씨 부분만 0.0.0.0/0 으로 고치면 된다.

다른 글에서는 METHOD 를 모두 MD5 로 고치라고 하는데, scram-sha-256 은 최신 버전의 강력한 암호화 방식이므로 그대로 두도록 하고 맨 위줄만 peer → md5 로 고치도록 한다. (이 부분은 dump 를 복원하는 psql 등에서 사용한다.)

vi /var/lib/pgsql/14/data/pg_hba.conf

# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             0.0.0.0/0               scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

 

자 그럼 서버를 재기동한다.

systemctl restart postgres-14

 

방화벽의 5432 포트를 열어준다.

firewall-cmd --permanent --zone=public --add-port=5432/tcp
firewall-cmd --reload

 

 

SQL Manager 를 다운로드 받아서 아래와 같이 접속을 테스트 해본다.

SQL Manager for PostgreSQL Freeware (full installation package) 를 받으면 된다.

무료 버전은 DB접속을 3개까지 등록할 수 있는 제약이 있고 나머지는 동일하다. 이 정도면 개발하는데는 충분하다.

https://www.sqlmanager.net/products/postgresql/manager/download

 

Product files for

Title Version Date Size Download link SQL Manager for PostgreSQL (full installation package) 6.4.1.56163 2022-11-11 136.13 MB Download SQL Manager for PostgreSQL Freeware (full installation package) 6.4.1.56163 2022-11-11 136.17 MB Download User's Manual

www.sqlmanager.net

접속 테스트가 성공하였다.

 

 


DUMP 복원 방법 (pg_restore 명령을 이용해서 복원해야 한다)

*. root 계정으로 작업해도 된다.

-d : DB명

-U : 사용자 명

pg_restore -d test_db -U test < /tmp/database.dump

 


.pgpass 활용방법

# cd /root
# vi .pgpass
host:port:db_name:user_name:password
# chmod 600 .pgpass

예) 127.0.0.1:5432:test_db:test_user:password!

이렇게 저장을 해두면 덤프 뜰때나 psql 접속시에 비밀번호 없이 통과가 가능하다.

덤프를 스케쥴러에 등록해서 주기적으로 뜨는 경우 sh 파일에 암호를 남겨놓으면 보안상 매우 취약하게 되기 때문에 이 방법을 권장한다.

 

 

 

참조 : https://cloudinfrastructureservices.co.uk/install-postgresql-on-centos-stream-9-server/

 

도움이 되었다면 공감과 댓글 부탁드립니다.

 


 

https://saju.choeum.com/pos/front/sjuF0101.do?ref=s_BwgZAV1CS2tVJUAFBwEHCjMAAAAAbUJXUg

 

처음 사주 - 인생 7포인트

2026년 성공하는 시기·성향·연애운·금전운·10년 운까지 한눈에

saju.choeum.com