Postgres 오류 메시지 : 치명적 : "…"사용자의 인증에 실패했습니다


26

이 메시지가 표시된다고 가정 해보십시오.

FATAL:  Ident authentication failed for user "..."

이 오류 메시지의 원인은 무엇입니까?

답변:


36

그것은 Postgres가 Ident 프로토콜을 사용하여 사용자를 인증하려고 시도하고 있다는 것을 의미합니다. auth 인증은 다음과 같이 작동합니다.

  • 데이터베이스 'db'에 데이터베이스 역할 'foo'가 있습니다.
  • 귀하의 pg_hba.conf(에서 파일 /etc/postgres-something/main프로토콜로 정의하는 '행선지')는 데이터베이스에 연결하기 위해 db특정 호스트에서 연결하는 사용자를 위해
  • 연결하는 유닉스 사용자 이름은 'foo'입니다.
  • 사용자가 연결하는 컴퓨터에서 실행되는 Ident 서버는 사용자 이름이 실제로 'foo'임을 확인합니다.

가능한 원인과 해결책 :

  1. 없다 어떤 행선지 서버 당신이에서 연결하려는 컴퓨터에서 실행은. 포트 113에서 연결을 시도하여이를 테스트하십시오. 실패하면 Ident 서버 (예 :)를 설치하십시오 sudo apt-get install oidentd.
  2. Ident 서버가 있지만 연결하려는 이름과 일치하는 데이터베이스 역할없습니다 (위 예에서 'foo'). 따라서 수퍼 유저 권한으로 데이터베이스에 연결하여 작성하십시오 CREATE ROLE foo. 또는에 항목을 추가하십시오 /etc/postgresql/.../main/pg_ident.conf.
  3. 쉘 사용자 이름 데이터베이스 역할 과 일치하지 않을 수 있습니다. 당신은 이를 테스트 할 수 있습니다 연결이 진행되는 동안 행선지 서버에 연결, 오른쪽 포트 번호를 전달하여.
  4. 어쩌면 실제로는 ID가 아닌 비밀번호연결 하고 싶을 수도 있습니다 . pg_hba.conf파일을 적절히 편집하십시오 . 예를 들어 다음을 변경하십시오.

    host all all 127.0.0.1/32 ident
    

    host all all 127.0.0.1/32 md5
    

2
페도라의 경우 파일은/var/lib/psql/data
Anwar

postgres가 왜 'ident'를 기본 로그인으로 사용하는지 대답하는 사람이 누구라고 생각하지 않습니까?
icc97

그것이 20 년 전에 말이되고 * nix에서 아무것도 변하지 않았기 때문입니까? :)
Steve Bennett

@ icc97,이 답변의 어떤 것도 "ident"가 Postgres의 기본 로그인임을 나타냅니다. 그 아이디어를 어디서 얻었습니까? Postgres 클러스터의 기본 수퍼 유저 역할 이름은 "postgres"입니다.
와일드 카드

9

원인에 대해서는 확실하지 않지만이 문제가 해결되었습니다.

...에서 pg_hba.conf

이것으로 변경하십시오 :

모든 127.0.0.1/32 md5를 모두 호스팅

정확한 오류 : Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"


1
"ident"-> "md5"를 변경하면 나를 위해 해냈습니다
webwesen

3

CentOS에서 다음 행을 추가하십시오 /var/lib/pgsql/9.3/data/pg_hba.conf.

host all all 127.0.0.1/32 trust

그리고 다른 항목을 주석으로 처리하십시오.

물론이 설정은 안전 하지 않지만 나와 같은 개발 VM을 망칠 경우 아마 괜찮을 것입니다 ...


0

아직 시도하지 않은 경우 pg_hba.conf 파일을 검토하십시오. 이름은 /var/lib/pgsql/9.3/data/pg_hba.conf(Fedora 20)와 같습니다. 'find / -name pg_hba.conf'를 사용하여 찾아야 할 수도 있습니다.

파일 맨 아래에서 로컬 테스트의 경우 'METHOD'값을 'trust'로 변경하십시오 (자세한 내용은 postgres 문서 참조). 모든 것이 깨끗하게 시작되고 새로운 매개 변수가 읽히도록 머신을 재부팅하십시오.

잘만되면 이것이 당신의 고통을 치료할 것입니다. PostgreSQL 9.3으로 Fedora 20에서 내 문제를 해결했습니다.


PostgreSQL 설정을 변경할 때 전체 머신을 재부팅 할 필요는 없습니다. 대신 pg_ctl reload콘솔에서 또는 SELECT pg_reload_conf();권한있는 사용자로 SQL을 실행할 때 사용하십시오.
benjwadams 2009 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.