본문 바로가기
프로그래밍

[Postgresql / psql]readonly Error Peer authentication failed for user 'readonly' - [solved]

by Mr.noobiest 2024. 4. 8.

postgresql

Postgresql 에러 발생


psql: error: FATAL:  Peer authentication failed for user "readonly"

에러가 발생하였는데, 원인은 PostgreSQL 데이터베이스에서 peer 인증을 시도했지만 실패했음을 나타내는 것이고, Peer 인증이란, DB에서 설정된 유저명과 실제 접속을 시도하는 유저명이 다른 경우 발생하는 에러이다.

 

 


 

 

Peer authentication failed 해결방법

 

pg_hba.conf 파일 위치로 이동

PostgreSQL 서버의 `pg_hba.conf` 파일을 확인해야 합니다. 이 파일은 인증 규칙을 정의하는데 사용됩니다. 일반적으로 `pg_hba.conf` 파일은 PostgreSQL 데이터베이스 클러스터의 `data` 디렉토리에 위치합니다.

 


 

pg_hba.conf 파일 수정(인증 규칙 수정)

`pg_hba.conf` 파일을 텍스트 편집기로 열고, 'readonly' 사용자에 대한 인증 규칙을 수정해야 합니다. `pg_hba.conf` 파일에서 'local' 또는 'host' 규칙을 찾고, 해당 규칙의 인증 메서드를 변경합니다. 예를 들어, 'local' 규칙을 다음과 같이 수정할 수 있습니다:

TYPE DATABASE USER ADDRESS METHOD
local all readonly   md5

  위의 예시에서는 'local' 규칙을 이용하여 'readonly' 사용자에게 'md5' 인증 메서드를 적용했습니다. 'md5'는 암호화된 비밀번호를 사용하여 인증하는 방식입니다. 필요에 따라 다른 인증 메서드를 선택할 수 있습니다. 

 


 

PostgreSQL 서버 재시작

`pg_hba.conf` 파일을 수정한 후에는 PostgreSQL 서버를 재시작해야 합니다. 다음 명령을 사용하여 PostgreSQL 서버를 재시작합니다.

   sudo systemctl restart postgresql
   

 


 

 

이후 다시 접속하면 에러가 뜨지 않을 겁니다.

psql -U readonly -d your_database

 

 


 

 

추가 Python으로 Postgresql DB 연결 코드

 

import psycopg2
with  psycopg2.connect(dbname='DB명', user='유저명', password='비밀번호', host='IP주소', port=포트번호) as conn:
    with conn.cursor() as cur:
        cur.execute("SELECT * FROM pg_extension")
        data = cur.fetchall()
        print(data)

 

 

끝.

728x90
반응형