잊어 버린 PostgreSQL Windows 비밀번호


31

오늘 아침 저는 Windows 7 Professional 데스크톱에서 PostgreSQL 데이터베이스를 연결하려고했습니다.

기본값은 'postgres'이지만 처음 설치할 때 사용한 암호를 잊어 버렸습니다.

Google에서 비밀번호 재설정과 관련된 게시물을 찾았 습니다 . 나는 단계를 따랐지만 최종 결과는 게시물에서 언급 한 것과 약간 다릅니다. 내가 사용한

net user postgres postgres

데이터베이스의 암호를 재설정하지만 성공 메시지 대신 다음과 같은 메시지가 나타납니다.

"시스템 오류 5가 발생했습니다. 액세스가 거부되었습니다."

시스템 오류. 이 오류를 피하고 암호를 재설정하려면 어떻게합니까?

답변:


33

(참고 : EDB 설치 프로그램에서 PostgreSQL 9.2 이상을 사용하는 독자에게는 그다지 중요하지 않습니다. 이제 다른 계정을 구성 할 수는 있지만을 사용하여 기본 설치를 크게 단순화했습니다NETWORK SERVICE .)


net user postgres postgres 데이터베이스의 비밀번호를 재설정하는 데 사용 했지만 성공 메시지 대신에"System error 5 has occurred. Access is denied."

서비스 계정 비밀번호를 재설정했거나 재설정하려고했습니다. 보안상의 이유로 PostgreSQL은 관리자로 실행되지 않으며 설치 프로그램은 일반적으로 PostgreSQL 9.1 및 그 이전 버전 1 의 "postgres"사용자 계정으로 설정합니다 . Windows에서는 레지스트리에 사용자의 비밀번호를 저장하지 않고 사용자로 서비스를 시작할 수 없으므로 설치 프로그램이 수행하는 작업입니다.

Windows 사용자 계정의 비밀번호를 변경하면 postgresPostgreSQL 서비스를 더 이상 시작할 수 없습니다. 업데이트하지 않은 비밀번호를 저장하려면 서비스 구성을 수정해야합니다.

고맙게도 다른 실수로 인해 그렇게 할 수 없다고 생각합니다. 권한이없는 Windows 사용자 계정이나 UAC가있는 컴퓨터에서 "관리자 권한으로 실행"을 사용하지 않고 명령 프롬프트를 실행하고있는 것으로 보이므로 postgres사용자 암호를 변경하는 데 필요한 액세스 권한으로 실행되고 있지 않습니다 .

해당 비밀번호를 변경하기 전에 실제로 원하는 비밀번호인지 확인하십시오. 여기서 해결하려는 문제는 무엇입니까? 데이터베이스 업데이트 또는 postgresWindows 사용자 의 비밀번호를 요구하는 다른 것을 설치하려고 합니까?

데이터베이스에 로그인하려고했을 가능성이 높습니다. 이를 위해 데이터베이스 자체에 저장된 (아쉽게도 전혀 관련이없는) 비밀번호를 사용합니다. 잃어 버렸거나 잊어 버렸으므로 재설정해야합니다.

  • pg_hba.conf에서 일반적으로 찾기C:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
  • 필요한 경우 권한을 설정하여 수정할 수 있도록하십시오. 속성 대화 상자의 보안 탭을 사용하여 관리자 재정의를 사용하여 권한을 부여 할 때까지 사용자 계정이 그렇게하지 못할 수 있습니다. 또는 시작 메뉴에서 notepad / notepad ++를 찾아 마우스 오른쪽 단추로 클릭하고 "관리자 권한으로 실행"을 선택한 다음 파일-> 열기를 사용하여 엽니 다 pg_hba.conf.
  • "127.0.0.1/32"호스트의 "postgres"사용자에 대한 "host"행을 "trust"로 설정하도록 편집하십시오. 줄이 없으면 추가 할 수 있습니다. 그냥 삽입하십시오 :

    host all postgres 127.0.0.1/32 trust
    host all postgres ::1/128      trust # if IPv6 is in use

    다른 줄 앞에 . 주석으로 시작하는 줄은 무시해도됩니다 #.

  • 서비스 제어판에서 PostgreSQL 서비스를 다시 시작하십시오 (시작-> 실행-> services.msc)

  • psql 또는 PgAdmin-III 또는 원하는 것을 사용하여 연결
  • ALTER USER postgres PASSWORD 'postgres'
  • 추가 한 줄을 제거 pg_hba.conf하거나 다시 변경
  • PostgreSQL을 다시 시작하십시오.

Windows에서 PostgreSQL의 postgres 비밀번호를 어떻게 재설정합니까?를 참조하십시오.


1. 9.2는 이제 NETWORKSERVICE비밀번호가 필요없는 계정을 사용하므로이 문제는 사라집니다 .


8
ip6 항목도 필요할 수 있습니다 : "모든 postgres 호스트 :: 1/128 트러스트"
Ted Elliott

내 dev 시스템에서 postreSQL 9.6으로 여전히 문제가 발생했습니다. 사람들이 왜 도움이되지 않는다고 생각하는지 모르겠 음> 9.2
tourdownunder on

@darwindave 설치에 따라 다릅니다. NETWORKSERVICE사용자 계정 을 사용하도록 설치 한 경우 servce 계정 비밀번호가 없습니다. postgres도메인 계정 과 같은 전용 서비스 계정을 사용하도록 설치 한 경우 도움이 될 수 있습니다.
Craig Ringer

9.2 이상으로 Windows에 대한 두 가지 방법을 모두 표시 하여이 답변을 최신 상태로 유지할 수 있습니까?
Evan Carroll

1
@EvanCarroll 사용중인 경우 NETWORK SERVICE재설정 할 비밀번호가 없습니다. 다른 계정을 사용하여 9.2 이상에 설치 한 경우 동일한 정보가 적용됩니다. 또한 postgres 수퍼 유저 데이터베이스 계정 비밀번호를 재설정하는 부분은 변경되지 않았습니다 . 따라서 실제로 변경이 필요하지 않습니다.
Craig Ringer

3

"postgres"라는 시스템 사용자 (Windows)와 이름이 같은 데이터베이스 사용자를 구별해야합니다.

pg_hba.conf 파일을 찾으십시오-PostgreSQL 서버에 대한 액세스를 제어합니다. 관리자 권한이있는 사용자로 편집해야합니다. 사용자 "postgres"를 언급하는 행을 찾고 일시적으로 모드를 "trust"로 설정하십시오. postgresql을 다시 시작하면 암호없이 연결할 수 있습니다. 비밀번호를 재설정 한 다음 파일을 원래 설정으로 복원하고 PostgreSQL을 다시 시작하십시오.

이 매뉴얼에는 인증 방법pg_hba.conf 파일에 대한 자세한 내용이 있습니다 .


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.