2016-08-15 2 views
0

PostgreSQL에 문제가 있습니다. psql.exe은 비밀번호로 쓰는 모든 것을 무시합니다.PostgreSQL의 psql.exe가 비밀번호를 확인하지 않습니다.

내가 지금까지 수행

내가 Postgre을 시작하는 간단한 (파워 쉘) 스크립트를 실행

그 실행으로
Start-Process -FilePath "C:\Program Files\PostgreSQL\pg95\bin\pg_ctl.exe" ` 
    'start -D "C:\Program Files\PostgreSQL\data\pg95"'' 

, 지금 같은 것을 사용하여 데이터베이스에 액세스 할 수 있습니다

& "C:\Program Files\PostgreSQL\pg95\bin\psql.exe" ` 
    --dbname=$databaseName --host=$dbHost --username=$userName -c $sqlString 

하지만 가장 불행히도 단말은 암호를 묻지 않습니다! psql.exe --help 이후

이 홀수는 라인 제공 :

.. 
-W, --password: force password prompt (should happen automatically) 

을하지만 그렇지 않습니다. -W을 적용하려고 시도하지만 입력 한 내용을 무시하고 데이터베이스에 액세스 할 수있게합니다.

해결책은 암호가 설정된 것일 수 있습니다. 그러나 암호는 비어 있습니다. 또 다른 해결책은 환경 변수 PGPASSWORD이 설정되어 있지만 어디에도 설정할 수 없다는 것입니다. Powershell에서 Get-ChildItem Env:을 시도했지만 cmd에서 set을 시도했지만 설정하지 않았습니다.

모든 의견을 환영합니다.

+1

은에 대해 자세히 알아 ['pg_hba.conf']은 (https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html) – Abelisto

답변

2

가장 짧지 만 가장 도움이되는 대답은 @abelisto입니다. c:\Program Files\PostgreSQL\data\pg95\ 밑에 위치 내 pg_hba.conf

는 상기 :

무조건적 연결 허용 :

# TYPE DATABASE  USER   CIDR-ADDRESS   METHOD 

# IPv4 local & remote connections: 
host all    all    127.0.0.1/32   trust 
host all    all    0.0.0.0/0    md5 
# IPv6 local connections: 
host all    all    ::1/128     trust 

From Abelisto's linktrust 같이 정의된다. 이 방법을 사용하면 PostgreSQL 데이터베이스 서버에 연결할 수있는 모든 사용자가 암호 나 다른 인증없이 원하는 모든 PostgreSQL 사용자로 로그인 할 수 있습니다.

인증을 위해 이중 MD5 해시 암호를 제공하기 위해 클라이언트를 필요 : md5로 전환

더 나은 결과를 주었다.

+1

귀하의 혼란이 정당화되지 않습니다. 사람들은 당신이'비밀 번호 '를 가진 사용자를 만들 수 있다는 것을 이상하게 여기며 로그인을 위해 패스워드를 사용할 필요가 없으며'패스워드없이'사용자를 생성 한 다음 패스워드를 물어볼 수있다. 자동 로그인을 기대하십시오). 'password' 또는'md5' auth 메쏘드가'pg_hba.conf'에서 사용된다면 암호가 사용된다는 것을 깨닫게되면 의미가 있습니다. 그래서 * * ​​암호가 * 필요한지 아닌지 *를 제어합니다. * 하나 필요합니다. 하지만 슈퍼 유저는 친숙하지 않습니다. –

관련 문제