비밀번호를 변경 한 후 PostgreSQL 사용자가 서버에 연결할 수 없습니다 만든 4 가지

내가 만든 4 가지 역할로이 문제
를 해결했습니다. GUI (1)를 사용하여 pgAdmin III에서 사용자의 비밀번호를 변경 한 후 해당 사용자는 더 이상 로그인 할 수 없습니다.
pgAdmin III 표시 오류 메시지 :

An error has occurred:

Error connecting to the server: FATAL:  password authentication failed for user "sam"
FATAL:  password authentication failed for user "sam"

내 시스템 : Ubuntu 12.04의 Postgresql 9.2

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

(1) : 계정 postgres로 로그인하고 로그인 역할에서 사용자를 마우스 오른쪽 버튼으로 클릭 한 후 ‘정의’탭으로 이동하여 비밀번호를 입력하십시오.



답변

PgAdmin 버그 ( changelog ) 에 물렸을 가능성이 있습니다 .

2012-07-04 AV 1.16.1 날짜 선택기 컨트롤은 기본적으로 전체 타임 스탬프를 반환하므로 작업 및 역할 유효 날짜에 실수로 날짜가 변경 될 수 있습니다. 시간 부분을 무시하십시오.

이 버그는 1/1/1970과 같이 과거의 암호 만료 날짜를 설정하는 것으로 나타났습니다. 이 경우 연결을 시도 할 때 발생하는 오류 메시지는 잘못된 비밀번호를 사용하는 것과 다르지 않습니다.

다음과 같이 만료 날짜를 확인할 수 있습니다.

SELECT usename,valuntil FROM pg_user;

그리고 그들이 틀렸다면, 다음으로 재설정하십시오 :

ALTER USER username VALID UNTIL 'infinity';

pgAdmin을 업그레이드하십시오.


답변

간단한 작업은 psql 또는 pgAdmin으로 로그인하는 것입니다.

ALTER USER sam WITH PASSWORD 'new_password';

이제 슈퍼 유저 계정으로 로그인 할 수없는 경우이 사용자에 대한 pg_hba.conf 설정을 변경하여 구성을 다시로드하여 복구 할 수 있습니다 (때로는 서버를 다시 시작해야하지만 그 이유는 확실하지 않습니다).

사용자의 로컬 연결에 대해 ident (9.2의 피어) 방법 (사용자와 동일한 이름의 로컬 시스템 계정을 사용할 수있는 경우)을 사용하여 로그인 할 수있는 행을 추가하거나 불가능합니다) “신뢰”(매우 일시적으로!)로 설정하십시오. 트러스트를 사용하는 경우 “사용자가 자신이 주장하는 사람임을 신뢰하십시오!”라는 의미이므로 가능한 빨리 설정하십시오. 결과적으로이 설정은 즉각적인 복구 요구를 벗어나서 활성화 된 상태로 유지하는 것이 위험합니다.

로그인하면 위의 비밀번호를 재설정 할 수 있습니다.


답변

Windows 변형의 경우-9.2 버전의 Windows x64 설치를 위해 pgAdmin으로 인해이 불쾌한 버그가 발생했습니다. 그것은 내 생산을 마비시켰다.

폴더 C:\Program Files\PostgreSQL\9.2\data또는 C:\Program Files (x86)\PostgreSQL\9.**x**\datapg_hba.conf 텍스트 파일이 있습니다.

다음 줄을 찾으십시오.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

다음과 같이 METHOD md5를 “trust”로 변경하십시오.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

에서 Windows>Run유형 “services.msc를”오른쪽 PostgreSQL의 인스턴스를 찾아 다시 시작 [Enter]를 누릅니다.

이제 DB 보안이 널리 개방되었습니다! 모든 관련 사용자에 대해 2099 년으로 사용자 비밀번호 만료 시간을 변경 한 후 md5로 되돌 리라는 경고에주의하십시오.


답변

아직 시도하지 않은 경우 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의 문제를 해결했습니다.

2016-10-14 업데이트 :

우분투에서 필요한 파일 이름은 /etc/postgresql/9.5/main/pg_hba.conf입니다. 로컬 테스트 전용의 경우 다음과 같이 수정하십시오.

...
#
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
# local   all             all                                     peer
  local   all             all                                     trust
# IPv4 local connections:
# host    all             all             127.0.0.1/32            md5
  host    all             all             127.0.0.1/32            trust

METHOD “trust”가있는 두 줄은 새로운 것입니다. 사용자 이름 / 암호없이 연결할 수 있습니다.

완료되면 다음을 통해 서버를 다시 시작해야합니다.

sudo systemctl restart postgresql 


답변

방금이 같은 문제가 있었고 같은 이름을 가진 여러 사용자가있는 것으로 나타났습니다 (다른 경우). 소유권을 병합하고 소유권을 제거한 후에는 최소한 명확했습니다. 연결 방법에 따라 케이스가 인증을 위해 반드시 전송되지는 않았습니다.


답변