postgres 설치 중에 입력 한 비밀번호를 잊었습니다


205

Postgres의 기본 사용자에게 암호를 잊어 버렸거나 (설치 중) 잘못 입력했습니다. 실행할 수없는 것 같고 다음 오류가 발생합니다.

psql: FATAL:  password authentication failed for user "hisham"
hisham-agil: hisham$ psql 

어쨌든 암호를 재설정하거나 수퍼 유저 권한을 가진 새 사용자를 어떻게 만듭니 까?

Postgres를 처음 사용하고 처음으로 설치했습니다. Rails와 함께 사용하려고하는데 Mac OS X Lion을 실행하고 있습니다.


1
아직 답변에 댓글을 달 수 없으므로 이렇게해야합니다. 나는 SaiyanGirl이 말한 것을했지만, 여전히 로그인하기 위해 'postgres'인 암호를 입력해야했고, 암호를 재설정 할 수있었습니다
Pascale

답변:


359
  1. 파일을 찾으십시오 pg_hba.conf-예를 들어,에있을 수 있습니다 /etc/postgresql-9.1/pg_hba.conf.

    cd /etc/postgresql-9.1/

  2. 를 백업

    cp pg_hba.conf pg_hba.conf-backup

  3. 주석 처리되지 않은 첫 번째 행 또는 유일한 행으로 다음 행을 배치하십시오.

아래 (로컬 및 호스트)의 모든 발생에 대해 exepct replication 섹션이 없으면 다음과 같이 변경해야합니다. MD5 또는 Peer autehication이 없어야합니다.

local  all   all   trust
  1. PostgreSQL 서버를 다시 시작하십시오 (예 : Linux :)

    sudo /etc/init.d/postgresql restart

    서비스 (데몬)가 로그 파일에서보고를 시작하지 않는 경우 :

    이 빌드는 로컬 연결을 지원하지 않습니다

    당신은 변경해야합니다

    local all all trust

    host all all 127.0.0.1/32 trust

  2. 이제 모든 사용자로 연결할 수 있습니다. 수퍼 유저로 연결 postgres(주, 수퍼 유저 이름은 설치 다를 수 있습니다. 일부 시스템에서 호출 될 때 pgsql, 예를 들어. )

    psql -U postgres

    또는

    psql -h 127.0.0.1 -U postgres

    (첫 번째 명령으로 항상 로컬 호스트와 연결되는 것은 아닙니다)

  3. 비밀번호 재설정 ( ' postgres 사용자를 재설정하기 때문에 my_user_name을 postgres로 교체하십시오 )

    ALTER USER my_user_name with password 'my_secure_password';

  4. 보관 pg_hba.conf하는 것이 매우 위험하므로 오래된 것을 복원하십시오.

    cp pg_hba.conf-backup pg_hba.conf

  5. 금고와 함께 실행하려면 서버를 다시 시작하십시오. pg_hba.conf

    sudo /etc/init.d/postgresql restart

pg_hba 파일에 대한 추가 정보 : http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html


9
그리고 시작 psql? 여전히 암호를 입력하라는 메시지가 나타납니다. 암호를 모르는 경우
CodyBugstein

4
이 답변은 3 단계를 수행 한 후에 서비스가 시작되지 않고 모릅니다. 아마도 OS (W8) 일뿐입니다.
Scaramouche

3
Windows를위한 사람?
Mahesha999

2
pg_hba.conf의 항목 순서는 중요합니다. 파일 끝에 "local all all trust"를 추가하면 이전 레코드가 먼저 일치하므로 예상대로 작동하지 않습니다. 따라서 파일 상단에 원하는 것을 넣으십시오.
Tagar

6
이 오류가있는 창에 있다면 @SaiyanGirl의 답변으로 계속 스크롤하십시오. 기존 항목의 METHOD 열을 'trust'로 수정 한 다음 완료되면 다시 변경하십시오
sean.hudson

99

명령 행에서 postgres에 연결할 때 -h localhost명령 행 매개 변수 로 추가하는 것을 잊지 마십시오 . 그렇지 않은 경우 postgres는 PEER 인증 모드를 사용하여 연결을 시도합니다.

아래는 비밀번호 재설정, PEER 인증을 통한 로그인 실패 및 TCP 연결을 사용한 성공적인 로그인을 보여줍니다.

# sudo -u postgres psql
could not change directory to "/root"
psql (9.1.11)
Type "help" for help.

postgres=# \password
Enter new password:
Enter it again:
postgres=# \q

실패:

# psql -U postgres -W
Password for user postgres:
psql: FATAL:  Peer authentication failed for user "postgres"

작업 -h localhost:

# psql -U postgres -W  -h localhost
Password for user postgres:
psql (9.1.11)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=#

7
"-h"옵션에 대한 팁을 주셔서 감사합니다.
Bunkerbewohner

Windows cmd.exe
불필요

1
Mac을위한 최상의 답변
Muhammad Umar

72

pg_hba.conf( C:\Program Files\PostgreSQL\9.3\data이 답변이 주어진 이후) 파일이 변경되었습니다. Windows에서 나를 위해 일한 것은 파일을 열고 METHOD에서 md5trust다음으로 변경하는 것 입니다 .

# 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

그런 다음 pgAdmin III를 사용하여 비밀번호를 사용하지 않고 로그인하여 사용자 postgres'비밀번호를 변경 했습니다.File -> Change Password


PgAdmin이 여전히 현재 비밀번호를 요청하기 때문에 작동하지 않습니다 ... 'trust'로 재설정하고 PgAdmin을 다시 시작했습니다. CURRENT 암호를 입력하지 않으면 여전히 재설정 할 수 없습니다 ...
gene b.

1
당신이 방법을 변경하면 trust당신은 이것을 따라 cmd에서 암호를 변경할 수 있습니다
Gilad Green

12

참고 사항 Linux의 sudo su - postgres경우 postgres 사용자가되기 위해 간단히 실행할 수 있으며 psql을 사용하여 필요한 것을 변경할 수 있습니다.


3
psql을 실행 한 후에도 여전히 암호가 필요합니다
Snow

8
  1. 파일을 편집하고 /etc/postgresql/<version>/main/pg_hba.conf다음 줄을 찾으십시오.

    local   all             postgres                                md5
  2. 줄을 편집하고 md5마지막으로 변경 trust하여 파일을 저장하십시오.

  3. postgresql 서비스를 다시로드하십시오.

    $ sudo service postgresql reload
  4. 구성 파일이로드됩니다. 이제 쉘 postgres에 로그인 하여 사용자를 수정할 수 있습니다psql

    $ psql -U postgres
  5. postgres사용자 비밀번호 업데이트

    alter user postgres with password 'secure-passwd-here';
  6. 파일을 편집 /etc/postgresql/<version>/main/pg_hba.conf및 변경 trust다시 md5하고 파일 저장

  7. postgresql 서비스를 다시로드하십시오.

    $ sudo service postgresql reload
  8. 비밀번호 변경이 작동하는지 확인

    $ psql -U postgres -W

Windows 솔루션을 제공하기가 너무 어렵습니까? 모든 사람이 sudo와 함께 Linux를 사용하는 것은 아닙니다. Windows에서 어떻게합니까?
유전자 b.

7

방금 Windows 10에서이 문제를 겪고 있었고 제 경우의 문제는 방금 실행 중이며 psql기본적으로 Windows 사용자 이름 ( "Nathan")으로 로그인하려고했지만 해당 이름을 가진 PostgreSQL 사용자가 없었습니다. 그리고 그것은 저에게 말하지 않았습니다.

그래서 해결책은 psql -U postgres그냥보다는 실행 하는 것이 었고 psql설치시 입력 한 암호가 작동했습니다.


5

최신 postgres 버전 (> 10)에 대한 Windows 사용자의 답변 추가

postgres 설치 위치로 이동하여를 검색 pg_hba.conf하십시오...\postgres\data\pg_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
#..

메소드를 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
# ...

이제 SQL Shell (PSQL)로 가서 모든 것을 비워 두십시오.

Server [localhost]:
Database [postgres]:
Port [8000]:
Username [postgres]: 

이번에는 비밀번호를 묻지 않고 로그인합니다.

이제이 라인을 실행하십시오. ALTER USER yourusername WITH SUPERUSER

이제 쉘을 \ q로 남겨 둘 수 있습니다

다시 pg_hba.conf 파일로 이동하여 METHOD를 trust에서 md5로 다시 변경하고 저장하십시오.

이제 새 사용자와 비밀번호로 로그인하면 \ du의 속성을 확인할 수 있습니다.


1

Windows 설치의 경우 Windows 사용자가 작성됩니다. 그리고 "psql"은이 사용자를 사용하여 포트에 연결합니다. PostgreSQL 사용자의 비밀번호를 변경해도 Windows 비밀번호는 변경되지 않습니다. 아래의 명령 줄은 명령 줄에 액세스 할 수있는 경우에만 작동합니다.

대신 Windows GUI 응용 프로그램 "c : \ Windows \ system32 \ lusrmgr.exe"를 사용할 수 있습니다. 이 앱은 Windows에서 만든 사용자를 관리합니다. 이제 비밀번호를 수정할 수 있습니다.


1

같은 문제를 해결하기 위해 내가 한 일은 다음과 같습니다.

터미널에서 gedit 편집기로 pg_hba.conf 파일을 엽니 다 :

sudo gedit /etc/postgresql/9.5/main/pg_hba.conf

비밀번호를 묻습니다. 관리자 로그인 비밀번호를 입력하십시오. 파일과 함께 gedit이 열립니다. 다음 줄을 붙여 넣습니다.

host  all   all  127.0.0.1/32  trust

바로 아래 -

# Database administrative login by Unix domain socket

저장하고 닫으십시오. 터미널을 닫았다가 다시 열고 다음 명령을 실행하십시오.

psql -U postgres

이제 psql 콘솔로 들어갑니다. 이제 다음을 입력하여 비밀번호를 변경하십시오.

ALTER USER [your prefered user name] with password '[desired password]';

사용자가 존재하지 않는다고 표시되면 ALTER 사용하십시오 CREATE.

마지막으로, pg_hba에 붙여 넣은 특정 줄을 제거하고 저장하십시오.


0

당신이 창문에 있다면 당신은 그냥 실행할 수 있습니다

net user postgres postgres

postgres / postgres를 사용자 / 암호로 사용하여 postgres에 로그인


0

사용자의 홈 디렉토리에있는 .pgpass 파일 또는 PGPASSFILE이 참조하는 파일에는 연결에 비밀번호가 필요한 경우 사용할 비밀번호가 포함되어있을 수 있습니다 (다른 비밀번호가 지정되지 않은 경우). Microsoft Windows에서 파일 이름은 % APPDATA % \ postgresql \ pgpass.conf입니다 (여기서 % APPDATA %는 사용자 프로필의 응용 프로그램 데이터 하위 디렉토리를 나타냄).

이 파일에는 다음 형식의 행이 포함되어야합니다.

호스트 이름 : 포트 : 데이터베이스 : 사용자 이름 : 암호

(위의 행을 복사하고 앞에 #을 붙여서 미리 알림 주석을 파일에 추가 할 수 있습니다.) 처음 네 개의 필드 각각은 리터럴 값 또는 *와 일치하는 문자 일 수 있습니다. 현재 연결 매개 변수와 일치하는 첫 번째 행의 비밀번호 필드가 사용됩니다. 따라서 와일드 카드를 사용할 때 더 구체적인 항목을 먼저 입력하십시오. 항목에 : 또는 \가 포함되어야하는 경우이 문자를로 이스케이프하십시오. localhost의 호스트 이름은 로컬 시스템에서 오는 TCP (호스트 이름 localhost) 및 Unix 도메인 소켓 (pghost empty 또는 기본 소켓 디렉토리) 연결과 모두 일치합니다. 대기 서버에서 데이터베이스 복제 이름은 마스터 서버에 대한 스트리밍 복제 연결과 일치합니다. 데이터베이스 필드는 사용자가 동일한 클러스터의 모든 데이터베이스에 대해 동일한 비밀번호를 가지므로 유용성이 제한됩니다.

Unix 시스템에서 .pgpass에 대한 권한은 월드 또는 그룹에 대한 액세스를 허용하지 않아야합니다. chmod 0600 ~ / .pgpass 명령으로이를 수행하십시오. 권한이 이보다 덜 엄격하면 파일이 무시됩니다. Microsoft Windows에서는 파일이 안전한 디렉토리에 저장되어 있다고 가정하므로 특별한 권한 점검이 수행되지 않습니다.


이 경로는 C : \ Users \ <user> \ AppData \ Roaming \ postgresql \ pgpass.conf로 확장되었습니다. 또한 PostgreSQL 서버를 껐다 켜는 것이 도움이 된 것 같습니다.
지리 데이터

0

당신이 맥 OS에 PostgreSQL을 실행하는 경우, 시도 이러한 :

  1. pg_hba.conf 파일 편집

  2. sudo vi /Library/PostgreSQL/9.2/data/pg_hba.conf

  3. 모든 사용자의 "md5"메소드를 파일 맨 아래 근처에서 "신뢰"하도록 변경하십시오.

  4. 서비스 이름 찾기

  5. ls / 라이브러리 / LaunchDaemons

  6. postgresql을 찾으십시오

  7. postgresql 서비스 중지

  8. sudo launchctl stop com.edb.launchd.postgresql-9.2

  9. postgresql 서비스를 시작하십시오

  10. sudo launchctl start com.edb.launchd.postgresql-9.2

  11. postgres로 psql 세션 시작

  12. psql -U postgres

  13. ( '신뢰'설정으로 인해 비밀번호를 요청하지 않아야 함)

  14. 다음을 입력하여 psql 세션에서 비밀번호 재설정

  15. ALTER USER postgres와 비밀번호 'secure-new-password';

  16. \큐
  17. 시작하다

  18. pg_hba.conf 파일 편집

  19. 다시 'md5'로 전환

  20. 서비스를 다시 시작하십시오


-1

이것이 Windows에서 나를 위해 일한 것입니다.

pg_hba.conf 파일을 편집하면 C : \ Program Files \ PostgreSQL \ 9.3 \ data에 있습니다.

# IPv4 local connections: host all all 127.0.0.1/32 trust

메소드를 trust에서 md5로 변경하고 Windows에서 postgres 서비스를 다시 시작하십시오.

그런 다음 pgadmin을 사용하여 비밀번호없이 postgres 사용자를 사용하여 로그인 할 수 있습니다. 파일-> 비밀번호 변경을 사용하여 비밀번호를 변경할 수 있습니다.

postgres 사용자에게 수퍼 유저 권한이 없으면 암호를 변경할 수 없습니다. 이 경우 수퍼 유저 액세스 권한으로 다른 사용자 (pgsql)로 로그인하고 사용자를 마우스 오른쪽 단추로 클릭하고 특성-> 역할 권한을 선택하여 다른 사용자에게 권한을 제공하십시오.

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