PgAdmin III-비밀번호가 비어있을 때 데이터베이스에 연결하는 방법은 무엇입니까?


21

내 PC에 PostgreSQL 9.1을 설치했습니다 (Win 7). 나는 그것을 성공적으로 연결하는 작은 Java 응용 프로그램이 login=sapassword="". 연결이 작동합니다.

그러나 PgAdmin III 자체에서는 거부됩니다. 나는 얻다:

Error connecting to the server: fe_sendauth: no password supplied

빈 암호로 PgAdmin III에서 데이터베이스에 어떻게 연결합니까?

편집하다

이것은 프로덕션 코드가 아닌 테스트 일뿐입니다.


확실하지는 않지만 PgAdmin이이를 지원하지 않는다고 쉽게 상상할 수 있습니다.
피터 Eisentraut

Java 앱이 pgAdmin과 동일한 클라이언트에 있습니까?
잭 더글러스

답변:


10

와 같은 수퍼 유저를 포함한 모든 사용자의 비밀번호없이 pgAdmin III에서 postgres 인스턴스에 연결할 수 있습니다 postgres.

다른 클라이언트에서 ok를 연결하고 있기 때문에 클라이언트 자체의 일부 방화벽 규칙이 한 프로그램을 허용하지만 다른 프로그램은 허용하지 않는 한 pgAdmin이 동일한 워크 스테이션에있는 경우 pgAdmin에서 연결할 수 없습니다.

문제가이 클라이언트에만 해당되는 경우 다음 중 하나 이상을 변경해야합니다.

  • pg_hba.conf
호스트 sa 192.168.0.nnn / 32 trust
  • postgresql.conf
listen_addresses = '*'
  • postgres 서버의 방화벽 (예 : iptables) :
-A 입력 -s 192.168.0.nnn -m state --state NEW -j ACCEPT

그러나 나는 당신이 이것을하지 않는 것이 좋습니다. 매뉴얼 에는 다음과 같은 이유가 있습니다.

신뢰 인증은 신뢰를 지정하는 pg_hba.conf 행으로 서버에 연결할 수있는 모든 시스템의 모든 사용자를 신뢰하는 경우 TCP / IP 연결에만 적합합니다. localhost (127.0.0.1) 이외의 TCP / IP 연결에 대해서는 트러스트를 사용하는 것이 거의 합리적이지 않습니다.

대신 다음 중 하나를 고려하십시오.

  • 비밀번호 및 md5 식별 사용
  • ssh를 통한 터널링 포트 5432

31

다른 곳 에서이 답변을 찾았습니다.

DB가 로컬 호스트에있는 경우“localhost”또는“127.0.0.1 ″을 사용하는 대신 연결에서 호스트 필드를 비워 두십시오. 이것은 PgAdmin에게 TCP 대신 로컬 유닉스 소켓을 통해 연결하도록 지시합니다.


원래 질문은 Windows 시스템에 관한 것이 었습니다.
dezso

3
아이게 바로 그거야. 호스트를 비워 두었습니다.
basicdays

이 필드는 비워 둘 수 없으며 필수입니다.
Athlan

pg에서 시스템 사용자 이름 (Linux)으로 이름 지정된 역할이있는 경우에만 호스트 필드를 비워 두는 것처럼 보입니다. 그렇지 않으면 사용자 맵이 필요하다고 생각합니다.
a1an

완전한! 신선한로 변경, PostgreSQL을하고 pgadmin의 설치 pg_hba.conf말을 trust대신 peer-이 라인 local all postgres trust, 그리고 도착 pgadmin에 모든 것을 작업을 호스트 및 암호 필드를 비워두고! pgadmin이 UI를 찾기 어려운 대신 소켓으로 전환하는 확인란을 추가하기를 바랍니다.
Anupam Jain
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.