> 결과 :
> CRITICAL ERROR: connection fail to DB_name
> +++++++++++++++++++++++++++++++++++++++++++++++
> 타 서버와의 db연결을 위해
>
> /usr/bin/postmaster /i /S /o /F /D/var/lib/pgsql
>
> 위와 같이 설정을 했습니다.
>
> 글구 tcp/ip 접속 관리를 위한
> /var/lib/pgsql/pg_hba.conf
> 에 해당 ip address를 추가두 시켜주었는데...
PostgreSQL 서버로의 원격 접속은 몇가지 방법에 의해서 조절됩니다.
접속이 안될 경우 확인해 봐야 하는 것은 몇가지 되질 않습니다.
1. postmaster 를 기동시 /i 옵션을 빼 먹었다.
: 가장 많은 원인입니다. 하지만 위에서 분명히 /i 옵션을
주셨으니 이것은 아니 로군요.
2. pg_hba.conf에 등록을 하지 않았던지 잘못했다.
: 등록을 시켜 주지 않은 경우가 대부분의 경우입니다.
하지만 등록을 시켰다고 하니 이 또한 아닐 가능성이 커지만
어떻게 등록을 하셨는지 일뤄 줄수 없겠는지요.
그리고 등록후에는 반드시 postmaster를 재기동하시기 바랍니다.
3. 사용자가 등록되어 있지 않다.
: PostgreSQL 의 DB user의 등록은 이름으로 이루어 지며, 이것은
시스템 계정의 사용자와는 전혀 무관합니다.
웹을 통한 접근시 주로 'nobody'로서 접근하게 되는데 이때에는
반드시 'nobody' 계정이 DB의 사용자로서 등록되어 있어야
합니다. (물론 되어 있으리라 생각합니다. 이 문제는 하도 언급
되다 보니 별로 틀리는 분들이 안계시더라구요)
4. DB 테이블의 Grant 문제
: 이것 또한 가장 많은 문제 중의 하나입니다. 접근하고자 하는
DB에서 접근하는 사용자에게로 권한이 열려 있지 않은 경우
입니다. 귀찮은 경우 간단히 다음과 같이 grant 명령을 주시고
테스트 후 적절한 grant로서 보안을 유지시키시기 바랍니다.
grant all on table_name to public;
이상이 가장 흔한 원인들의 대부분입니다.
하나하나 차근차근 따져 보시기 바랍니다.
> 또 한가지 제 서버는 hosts.allow 및 hosts.deny는 default임.
참고로 postmaster 데몬은 inetd 아래 돌아가는 데몬이 아니기 때문에 TCP wrapper 의 영향은 전혀 받지 않습니다. 그러므로 hosts.allow와 hosts.deny의 설정과는 무관합니다.
그럼 꼭 성공하시기 바랍니다.
|