[AWS] EC2 리눅스 인스턴스에 직접 postgeSQL 설치
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