본문 바로가기

AWS
[AWS] Server Error error: no pg_hba.conf entry for host "", user "", database "", no encryption PostgreSQL 연결 에러 해결

// Server Error error: no pg_hba.conf entry for host "", user "", database "", no encryption

RDS 구축하고 DBeaver에서 붙는 것까지 확인했다.

테이블까지 생성해놓고 프로그램을 시행하는데 에러 발생...

DB가 해당 클라이언트 접근을 허용하지 않는다는데,,

분명 네트워크 설정 마쳐서 DBeaver에서 잘만 되는데 왜 프로그램에서 연결이 안 되는 걸까 머리가 아팠다 ㅠ.ㅠ

뒤지고 뒤져본 결과, SSL 연결 문제였다.

DBeaver 같은 DB 관리 도구는 자동으로 SSL 연결을 처리하는데, 코드에서 연결할 때는 명시적인 연결이 필요하다는 것..

PostgreSQL RDS의 경우 rds.force_ssl 파라미터를 사용하여 SSL을 사용하도록 설정하는데,  PostgreSQL 버전 15이상은  rds.force_ssl 파라미터 기본값이 1(켜짐)이라서 에러가 난 것이다.

해결 방법은 3가지이다.

1. PostgreSQL 버전을 14로 내리기
2. 파라미터 값 수정하기 
3. SSL을 포함하여 DB 연결하기

나는 볼륨이 작은 개인 프로젝트라서 일단 2로 해결했는데, 보안을 위해서는 3로 해결하는 것이 좋다.
(DB 버전을 내리는 것도 당장 편하긴 하지만 굳이 저 방법을 택하진 않을 것 같다.)


// 파라미터 값 수정하기 

지금 사용하고 있는 파라미터 그룹은 default.postgre16이다. (16버전이라)

들어가서 rds.force_ssl 파라미터를 찾아보면 값이 1인 걸 확인할 수 있다.

근데 이건 Default 파라미터 그룹이라 바로 수정이 안 된다..

파라미터 그룹을 새로 생성해서 값을 바꾸고 RDS와 연결해주어야 한다.

RDS > 파라미터 그룹에 들어와서 파라미터 그룹 생성을 클릭한다. (나는 하나 만들어뒀다.)

파라미터 그룹 패밀리는 현재 내가 사용하는 RDS 버전을 체크해야 한다.

나는 16 엔진 사용중이라 16 선택.

그룹 이름과 설명은 자유롭게 입력하고 생성을 눌러준다.

생성된 파라미터 그룹을 눌러서 편집한다.

rds_force_ssl 항목을 찾아서 값을 0으로 변경 후 저장한다.

변경이 완료됐으면 이제 RDS와 생성한 파라미터 그룹을 연결해주어야 한다.

원하는 데이터베이스를 클릭하여 수정한다.

아래로 쭉쭉 내려서 DB 파라미터 그룹을 생성한 파라미터 그룹으로 바꿔준다.

수정 사항 확인하고 적용 시간을 즉시 적용으로 변경한다.

default가 다음 유지 관리 기간 적용이라 불편..

이제 수정 완료 기다렸다가 다시 연결하면 된다.
(수정 중에서 사용 가능으로 다시 바뀌면 시도하기)

 

'AWS' 카테고리의 다른 글

[AWS] RDS 구축  (0) 2023.10.16
[AWS] EC2 인스턴스 생성  (0) 2023.10.15
[AWS] S3 이미지 삭제(+ CKEditor5)  (1) 2023.10.12
[AWS] S3 이미지 업로드(+ CKEditor5)  (1) 2023.10.12