[postgresql] psql : 치명적 : 사용자 “postgres”에 대한 ID 인증 실패

Ubuntu Karmic 상자에 PostgreSQL과 pgAdminIII을 설치했습니다.

pgAdminIII를 성공적으로 사용할 수 있지만 (예 : 연결 / 로그온) 명령 줄에서 동일한 사용자 이름 / pwd (psql 사용)를 사용하여 서버에 로그인하려고하면 오류가 발생합니다.

psql: FATAL:  Ident authentication failed for user "postgres"

이제이 문제를 해결하는 방법이 있습니까?



답변

pg_hba.conf에서 적절한 설정을 했습니까?

https://help.ubuntu.com/stable/serverguide/postgresql.html을 참조 하십시오 .


답변

다음 단계는 Ubuntu 12.04에 postgres 9.1을 새로 설치하는 데 사용됩니다. (우분투 14.04의 postgres 9.3.9에서도 작동했습니다.)

기본적으로 postgres는 ‘postgres’라는 사용자를 만듭니다. 우리는 그녀로 로그인하고 그녀에게 암호를 제공합니다.

$ sudo -u postgres psql
\password
Enter password: ...
...

또는 psql을 입력하여 로그 아웃하십시오 . 그런 다음 ‘postgres’로 연결합니다. 부분은 중요하다 : 그것은 이야기 , 그리고 (암호에 대해 상관하지 않는다) 피어 연결을 통해 우리는 (암호 인증을 사용하도록 구성되어) TCP 연결을 사용하여 연결하려면 해당 클라이언트를.\qctrl+d-h localhostpsql

$ psql -U postgres -h localhost


답변

파일을 편집을 /etc/postgresql/8.4/main/pg_hba.conf하고 교체 ident또는 peer중 하나에 의해 md5또는 trust당신이 자신의 컴퓨터 여부에 암호를 요청할지 여부에 따라. 그런 다음 다음을 사용하여 구성 파일을 다시로드하십시오.

/etc/init.d/postgresql reload


답변

클라이언트 인증에 실패하여이 오류가 발생합니다. 오류 메시지에 따라 모든 postgreSQL 연결에 대해 클라이언트 인증 방법을 “IDENT”로 설정하는 기본 postgres 구성이있을 수 있습니다.

사용 가능한 인증 설정 ( pg_hba.conf의 각 레코드에 대한)을 더 잘 이해 하려면 PostgreSQL 매뉴얼19.1 클라이언트 인증 섹션을 반드시 읽어야 하지만 다음은 버전 9.5 매뉴얼 의 문제를 해결하는 데 도움이되는 관련 스 니펫입니다. ) :

믿음

무조건 연결을 허용하십시오. 이 방법을 사용하면 PostgreSQL 데이터베이스 서버에 연결할 수있는 누구나 암호 나 다른 인증 없이도 원하는 PostgreSQL 사용자로 로그인 할 수 있습니다. 자세한 내용은 19.3.1 절을 참조하십시오.

받지 않다

무조건 연결을 거부하십시오. 이는 그룹에서 특정 호스트를 “필터링”하는 데 유용합니다. 예를 들어 거부 라인은 특정 호스트의 연결을 차단할 수 있지만, 이후 라인은 특정 네트워크의 나머지 호스트를 연결할 수 있습니다.

md5

클라이언트가 인증을 위해 MD5 해시 이중 암호를 제공해야합니다. 자세한 내용은 19.3.2 절을 참조하십시오.

암호

클라이언트가 인증을 위해 암호화되지 않은 비밀번호를 제공해야합니다. 암호는 네트워크를 통해 일반 텍스트로 전송되므로 신뢰할 수없는 네트워크에서는 사용하지 않아야합니다. 자세한 내용은 19.3.2 절을 참조하십시오.

gss

GSSAPI를 사용하여 사용자를 인증하십시오. TCP / IP 연결에만 사용할 수 있습니다. 자세한 내용은 19.3.3 절을 참조하십시오.

sspi

SSPI를 사용하여 사용자를 인증하십시오. 이것은 Windows에서만 사용 가능합니다. 자세한 내용은 19.3.4 절을 참조하십시오.

신분

클라이언트의 ID 서버에 접속하여 클라이언트의 운영 체제 사용자 이름을 확보하고 요청 된 데이터베이스 사용자 이름과 일치하는지 확인하십시오. ID 인증은 TCP / IP 연결에서만 사용할 수 있습니다. 로컬 연결에 지정된 경우 피어 인증이 대신 사용됩니다. 자세한 내용은 섹션 19.3.5를 참조하십시오.

동료

운영 체제에서 클라이언트의 운영 체제 사용자 이름을 확보하여 요청 된 데이터베이스 사용자 이름과 일치하는지 확인하십시오. 로컬 연결에서만 사용할 수 있습니다. 자세한 내용은 19.3.6 절을 참조하십시오.

ldap

LDAP 서버를 사용하여 인증하십시오. 자세한 내용은 19.3.7 절을 참조하십시오.

반지름

RADIUS 서버를 사용하여 인증하십시오. 자세한 내용은 섹션 19.3.8을 참조하십시오.

증명서

SSL 클라이언트 인증서를 사용하여 인증하십시오. 자세한 내용은 19.3.9 절을 참조하십시오.

운영 체제에서 제공하는 PAM (Pluggable Authentication Modules) 서비스를 사용하여 인증하십시오. 자세한 내용은 19.3.10 절을 참조하십시오.

따라서 … 발생한 문제를 해결하기 위해 다음 중 하나를 수행 할 수 있습니다.

  1. 당신에 정의 된 인증 방법 (들) 변경 pg_hba.conf
    에 파일 trust, md5또는 password당신이 거기에 정의 된 로컬 연결 기록을 위해 (보안과 단순성의 요구에 따라).

  2. pg_ident.conf운영 체제 사용자를 PostgreSQL 사용자에게 매핑하고 필요에 따라 해당 액세스 권한을 부여하도록 업데이트 하십시오.

  3. IDENT 설정은 그대로두고 액세스 권한을 부여 할 각 운영 체제 사용자에 대해 데이터베이스에 사용자를 작성하십시오. 사용자가 이미 OS에 의해 인증되고 로그인 한 경우 PostgreSQL은 추가 인증이 필요하지 않으며 데이터베이스에서 지정된 권한 (역할)에 따라 해당 사용자에게 액세스 권한을 부여합니다. 이것이 기본 구성입니다.

참고 : 위치 pg_hba.confpg_ident.confOS가 달려있다.


답변

-h localhost비트를 추가하기 만하면 작업이 완료되었습니다.


답변

환경 변수를 설정할 수 있습니다 PGHOST=localhost.

$ psql -U db_user db_name
psql: FATAL:  Peer authentication failed for user "db_user"

$ export PGHOST=localhost
$ psql -U db_user db_name

Password for user mfonline:


답변

위의 어느 것도 당신을 위해 작동하지 않는 경우 :

나는 꽤 많은 Postgres 설치를 수행했지만 오늘 RedHat 6.5 시스템 (Postgres 9.3 설치)에서 flummoxed되었습니다. Aron이 위에서 보여준 일반적인 hba.conf 구성이 작동하지 않았습니다. 내 시스템이 IPV6을 사용하고 IPV4 구성을 무시하는 것으로 나타났습니다. 라인 추가하기 :

host    all             all             ::1/128                 password

로그인에 성공했습니다.