이 메시지가 표시된다고 가정 해보십시오.
FATAL: Ident authentication failed for user "..."
이 오류 메시지의 원인은 무엇입니까?
답변
그것은 Postgres가 Ident 프로토콜을 사용하여 사용자를 인증하려고 시도하고 있다는 것을 의미합니다. auth 인증은 다음과 같이 작동합니다.
- 데이터베이스 ‘db’에 데이터베이스 역할 ‘foo’가 있습니다.
- 귀하의
pg_hba.conf
(에서 파일/etc/postgres-something/main
프로토콜로 정의하는 ‘행선지’)는 데이터베이스에 연결하기 위해db
특정 호스트에서 연결하는 사용자를 위해 - 연결하는 유닉스 사용자 이름은 ‘foo’입니다.
- 사용자가 연결하는 컴퓨터에서 실행되는 Ident 서버는 사용자 이름이 실제로 ‘foo’임을 확인합니다.
가능한 원인과 해결책 :
- 없다 어떤 행선지 서버 당신이에서 연결하려는 컴퓨터에서 실행은. 포트 113에서 연결을 시도하여이를 테스트하십시오. 실패하면 Ident 서버 (예 :)를 설치하십시오
sudo apt-get install oidentd
. - Ident 서버가 있지만 연결하려는 이름과 일치하는 데이터베이스 역할 이 없습니다 (위 예에서 ‘foo’). 따라서 수퍼 유저 권한으로 데이터베이스에 연결하여 작성하십시오
CREATE ROLE foo
. 또는에 항목을 추가하십시오/etc/postgresql/.../main/pg_ident.conf
. - 쉘 사용자 이름 이 데이터베이스 역할 과 일치하지 않을 수 있습니다. 당신은 이를 테스트 할 수 있습니다 연결이 진행되는 동안 행선지 서버에 연결, 오른쪽 포트 번호를 전달하여.
-
어쩌면 실제로는 ID가 아닌 비밀번호 로 연결 하고 싶을 수도 있습니다 .
pg_hba.conf
파일을 적절히 편집하십시오 . 예를 들어 다음을 변경하십시오.host all all 127.0.0.1/32 ident
에
host all all 127.0.0.1/32 md5
답변
원인에 대해서는 확실하지 않지만이 문제가 해결되었습니다.
…에서 pg_hba.conf
이것으로 변경하십시오 :
모든 127.0.0.1/32 md5를 모두 호스팅
정확한 오류 : Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"
답변
CentOS에서 다음 행을 추가하십시오 /var/lib/pgsql/9.3/data/pg_hba.conf
.
host all all 127.0.0.1/32 trust
그리고 다른 항목을 주석으로 처리하십시오.
물론이 설정은 안전 하지 않지만 나와 같은 개발 VM을 망칠 경우 아마 괜찮을 것입니다 …
답변
아직 시도하지 않은 경우 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에서 내 문제를 해결했습니다.