AWS

[AWS] EC2 리눅스 인스턴스에 직접 postgeSQL 설치

winterlove 2024. 7. 23. 15:13

ssh를 통해 연결한 후에 powershell에서 진행한다.
처음 진행하다보니 RDS에서 연결이 잘 안되는 바람에 인스턴스에 직접  PostgreSQL을 설치하여 진행했다.

1. PostgreSQL 설치

PostgreSQL 설치 리스트를 확인한다.
코드를보면 지난 Java 설치와 동일하다.

내가 다운로드 가능한 postgresql 버전들이다.

sudo yum list | grep postgre

 

다운로드 진행

sudo yum install -y postgresql15-server.x86_64

설치 완료!

 

2. DB 생성 및 서비스 실행

sudo postgresql-setup initdb
sudo systemctl start postgresql.service

 

포트 잘 열려있는지 확인

sudo netstat -plnt | grep postgres

 

비밀번호 수정
원하는 비밀번호 입력하여 변경한다.

sudo passwd postgres

 

서비스 등록

sudo systemctl enable postgresql.service

 

3. 방화벽 오픈 및 conf 파일 수정

오픈을 위해 파일 경로를 찾아준다.

sudo find / -name pg_hba.conf

 

nano 편집기를 사용하여 열어준다.

sudo nano /var/lib/pgsql/data/pg_hba.conf

로컬 연결 시에도 위 METHOD 들을 바꿔주어야한다.

METHOD : 클라이언트가 DB 접근 시 사용할 인증 방식

peer : Unix 소켓 연결에서 사용, 클라이언트가 운영 체제 사용자로 인증되어 동일한 사용자로 연결되도록 허용함
ident : TCP/IP  연결에서 사용, IP주소 기반으로 운영체제 사용자 확인 후 동일한 사용자로 연결되도록 허용함
md5 : 암호를 제공하는 방법 ( 설정한 암호! )
trust : 인증 없이 바로 접근, 매우 신뢰할 수 있는 네트워크에서만 진행할 것
password : 암호를 제공하는 방법이나 평문으로 전송되기에 보안이 약하다

 

아래 코드를 추가하여 모든 포트를 열어준다.

host    all             all             0.0.0.0/0               md5

ctrl+X를 눌러 종료, Y를 눌러 저장 Eneter로 확인한다.

 

다시 nano 편집기로 conf 파일 수정한다.

sudo nano /var/lib/pgsql/data/postgresql.conf

 

Ctrl + W를 누르면 검색을 할 수 있는데, listen_addresses 를 검색하고 Eneter

listen_addresses = '*'

위코드로 수정한 후 저장해준다.

내 경우, 이런저런 환경에서 연결할일이 잦아 전체 IP를 허용했으나 여러 방법이 있다.

localhost - listen_addresses = 'localhost'
특정 IP - listen_addresses = '192.168.1.100'
여러 IP - listen_addresses = 'localhost,192.168.1.100'
연결막기 - listen_addresses = ''

 

그리고 EC2 인스턴스에서도 방화벽을 오픈해주어야한다.

sudo systemctl restart postgresql

 

wizard 보안 그룹을 클릭 후 인바운드 규칙 편집을 눌러준다.

 

PostgrSQL을 선택하면 자동으로 5432 포트가 뜬다.
0.0.0.0/0으로 추가해준다.

 

4. 연결하기

나는 Dbeaver라는 툴을 사용중이고 내 PC에서 연결을 시도할 것이다.

EC2 인스턴스에 진입해주고 퍼블릭 IPv4 주소를 복사한다.
(이전 글의 탄력적 IP 를 사용!)

 

host - 퍼블릭 IPv4 주소 
Database - postgres
username - postgres
password - 설정 비밀번호

연결 완료!

 

이렇게되면 DB 연결까지 완료다!

 

나는 비밀번호를 분명 제대로 썼는데 안되어서 다시 수정하게 되었는데..
아래 코드를 입력하면 다시 설정할 수 있다.

이후 \q를 입력해서 psql 종료하면 된다.

sudo -u postgres psql
\password postgres