“치명적 오류: 사용자 ‘postgres’의 password 인증을 실패했습니다” 해결 방법

리눅스에서 PostgreSQL 데이터베이스를 다루다 보면 "치명적 오류: 사용자 'postgres'의 password 인증을 실패했습니다"라는 에러를 마주칠 때가 있습니다. 이 오류는 PostgreSQL 클라이언트(예: psql)가 postgres 사용자로 접속하려 할 때 인증 과정에서 문제가 생겼음을 나타냅니다. 이 글에서는 이 오류의 주요 원인과 단계별 해결 방법을 실무 중심으로 정리해드릴게요.

 

오류 메시지 분석

에러 메시지 예시:

psql: error: FATAL:  password authentication failed for user "postgres"

  • 의미: postgres 사용자의 비밀번호가 틀렸거나, 인증 설정이 잘못되어 접속이 차단됨.
  • 상황: psql -U postgres 또는 애플리케이션 연결 시 발생.
  • 키워드: PostgreSQL 인증 실패, postgres 비밀번호 오류, psql 접속 문제.

 

주요 원인

  1. 잘못된 비밀번호 입력
  2. 인증 방식 설정 오류
  3. 비밀번호 미설정
  4. 잘못된 연결 옵션

 

해결 방법: 단계별 접근

1. 비밀번호 확인 및 재설정

PostgreSQL에서 postgres 사용자의 비밀번호가 문제일 수 있으니 먼저 확인하고 재설정합니다.

  • 비밀번호 확인
  • 비밀번호 재설정

 

2. pg_hba.conf 설정 점검 및 수정

PostgreSQL는 /etc/postgresql/[버전]/main/pg_hba.conf (또는 /var/lib/pgsql/data/pg_hba.conf)에서 인증 방식을 정의합니다. 이 파일이 문제 원인일 가능성이 높습니다.

  • 파일 열기:
    sudo nano /etc/postgresql/14/main/pg_hba.conf
  • 현재 설정 확인: 기본 설정 예:
    # TYPE  DATABASE  USER  ADDRESS  METHOD
    local   all       postgres       peer
    host    all       all    127.0.0.1/32  md5
  • 문제 상황:
  • 수정: 로컬과 원격 모두 비밀번호로 인증하도록 변경:
    local   all       postgres       md5
    host    all       postgres  127.0.0.1/32  md5
    host    all       postgres  0.0.0.0/0     md5
  • 설정 적용:
    sudo systemctl reload postgresql

 

3. 접속 옵션 확인

명령어 옵션이나 애플리케이션 연결 문자열이 잘못됐을 수도 있습니다.

  • 로컬 접속:
    psql -U postgres
  • TCP/IP 접속:
    psql -U postgres -h localhost
  • 연결 문자열: 애플리케이션에서:
    postgresql://postgres:새비밀번호@localhost:5432/dbname

 

4. PostgreSQL 로그 점검

문제가 지속되면 로그로 원인을 추적하세요.

  • 로그 위치:
    sudo cat /var/log/postgresql/postgresql-14-main.log
  • 확인 항목:
  • 해결: 로그 메시지에 따라 비밀번호나 pg_hba.conf 재점검.

 

추가 팁과 주의점

  • 비밀번호 저장: .pgpass 파일로 비밀번호 관리:
    echo "localhost:5432:*:postgres:새비밀번호" > ~/.pgpass
    chmod 600 ~/.pgpass
  • 방화벽: 포트 5432 열려 있는지 확인(sudo ufw allow 5432).
  • 서비스 상태: PostgreSQL 실행 중인지 점검(sudo systemctl status postgresql).
  • 초기화: 최악의 경우 데이터베이스 재설치 후 복구.

 

오류 해결의 끝, 다음으로 넘어갈 준비!

"치명적 오류: 사용자 'postgres'의 password 인증을 실패했습니다"는 비밀번호 문제나 인증 설정 오류에서 주로 발생합니다. 위 단계를 따라 비밀번호를 재설정하고, pg_hba.conf를 조정하면 대부분 해결됩니다. 다음 시간에는 PostgreSQL 백업과 복구 전략과 성능 최적화를 위한 인덱스 튜닝을 다뤄볼게요.

데이터베이스 관리 실력을 한 단계 업그레이드할 기회 놓치지 마세요!

댓글

Designed by JB FACTORY