안녕하세요. postgres를 2년전부터 잘 사용하고 있는데요. 간만에 다시 postgres를 사용하게 되었네요.
환 경 말씀드리겠습니다.
postgres 8.3
windows7
eclipse
대 략 이렇고요. 일단 postgres 8.3을 설치하면서 postmaster 서비스에 postmaster유저계정을 생성하였습니다.
슈 퍼유저는 postgres로 초기값 그대로 비밀번호만 설정하여 최종 설치하게 되었습니다.
기본 디폴트 설치디렉토리 (D:\Postgres\8.3) 입니다.
여기까지 잘 설치되었는지 확인하기 위하여 윈도우의 서비스 항목으로 확인. 제대로 postmaster 서비스가 올라가
있습니다. 물론 pgAdmin으로도 정상적 접근 가능.
이러한 상태에서 pg_ctl 명령과 더불어 pg_hba,conf & postgresql.conf 를 수정하면서 test를 하고 있습니다.
pg_ctl stop -D D:\Postgres\8.3\data 및 서비스항목에서 서비스중지/사용/일지정지 등을 사용하였습니다.
postgresql.conf 에 listen_addresses = '*' 설정완료.
====
pg_hba 파일에서 보면 host all all 127.0.0.1/32 md5 이런식으로 되어있죠. md5를 trust로 변경.
서비스 시작을 하면 서비스를 시작할 수 없습니다.라는 해서 윈도우 이벤트로그를 확인. 오류는 아니지만
경고를 나타내고 있습니다. 내용은
9 user registry handles leaked from \Registry\User\S-1-5-21-1938152661-2236441811-1254109389-1006: Process 1328 (\Device\HarddiskVolume1\Windows\System32\conhost.exe) has opened key \REGISTRY\USER\S-1-5-21-1938152661-2236441811-1254109389-1006 Process 2576 (\Device\HarddiskVolume2\PostgreSQL\8.3\bin\postgres.exe) has opened key \REGISTRY\USER\S-1-5-21-1938152661-2236441811-1254109389-1006\Software\Microsoft\Windows NT\CurrentVersion Process 608 (\Device\HarddiskVolume2\PostgreSQL\8.3\bin\postgres.exe) has opened key \REGISTRY\USER\S-1-5-21-1938152661-2236441811-1254109389-1006\Control Panel\International Process 3868 (\Device\HarddiskVolume2\PostgreSQL\8.3\bin\postgres.exe) has opened key \REGISTRY\USER\S-1-5-21-1938152661-2236441811-1254109389-1006\Control Panel\International Process 2456 (\Device\HarddiskVolume2\PostgreSQL\8.3\bin\postgres.exe) has opened key \REGISTRY\USER\S-1-5-21-1938152661-2236441811-1254109389-1006\Control Panel\International Process 2052 (\Device\HarddiskVolume2\PostgreSQL\8.3\bin\postgres.exe) has opened key \REGISTRY\USER\S-1-5-21-1938152661-2236441811-1254109389-1006\Control Panel\International Process 1328 (\Device\HarddiskVolume1\Windows\System32\conhost.exe) has opened key \REGISTRY\USER\S-1-5-21-1938152661-2236441811-1254109389-1006\Control Panel\International Process 2576 (\Device\HarddiskVolume2\PostgreSQL\8.3\bin\postgres.exe) has opened key \REGISTRY\USER\S-1-5-21-1938152661-2236441811-1254109389-1006\Control Panel\International Process 2344 (\Device\HarddiskVolume2\PostgreSQL\8.3\bin\postgres.exe) has opened key \REGISTRY\USER\S-1-5-21-1938152661-2236441811-1254109389-1006\Control Panel\International
머 이러한데. 당췌 뭔소리인지 모르겠고요.
해서 다시 md5로 변경 후 서비스를 정상 동작시키고, 설정파일에서 trust로 수정뒤 서비의 정지/시작없이
리로드만 하여 사용하니 제대로 적용은 되더군요. 이건 편법이라 생각되고...(운영체제의 재부팅등이 이루어지면
postmaster serivce도 다시 시작하게 되는데. 위 편법같이 해놓고 재부팅이 된다면 재부팅후 서비스는 정지상태로 이루어지죠.)
이 러한 현상에 대하여 너무 갑갑하여 이렇게 글을 올리게되네요. postgres의 정책상 로컬호스트의 기본이 되는 database server에 대하여 원칙적으로 trust는 허용안하는것인지..
그리고 지금보면 trust에서 다시 md5로 돌리고 윈도우 상에서 서비스정지를 한 후 시작을 할 때도 오류를 나타내며 시작이 안돼서 확인해보니 postgres 프로세스가 계속 돌고 있더군요. 그래서 윈도우모드에서의 서비스정지가 아닌 cmd창을 열어 pg_ctl stop -D 로 server stop을 하니 깔끔하게 프로세스까지 죽더군요. 좀전까지 (servicename).pid파일이 생겼다 사라졌다 하길래 무엇일까 고민했는데 확인되었네요. pg_ctl stop를 할경우 pid파일까지 사라지더군요.
여기까지 test를 해보니 pg_ctl stop로 하였을시 postmaster service까지 정지가 되는데... pg_ctl start로 하면 서버만 구동이 되고 postmaster serivce는 정지상태가 유지되고 있다는... 해서 net start postmaster를 수행하면 시작할수 없다는 오류. 결국 pg_ctl start로 인하여 서버가 구동되어 프로세스가 돌고 있으니 postmaster service와 충돌이 난다고 하는것 같다는. 나름 투덜 거리며 stop시에는 pg_ctl stop를 사용, start시에는 net start postmaster를 사용하게 되었네요. 먼가 정확한 개념과 정리가 필요할 듯한데 이곳 저곳 찾아보면서 찾아보자니 원하는 정보가 딱히 없어서..
질문글조차 잘 쓰지 못했네요.
요점( md5 -> trust) 변경시 서비스 시작시의 문제점.(정책인가 아님 또 다른 설정을 해야 하는가)
서비스 서버의 시작 및 정지시 정확한 사용법
정지: pg_ctl stop -D ../../.../
시 작: net start (servicename) or pg_ctl start -D ../../../ ??
덧 붙여 한가지 더 질문하자면
어떤분(성함이 기억이 안나서.)이 쓰신 튜로티얼 글에 hba.conf에서 ip에대한 설정은 비추, 커널레벨에서의 제어를
추천한다고 하는데 커널레벨에서의 ip 제어 관련정보를 알 수 있을까요?(링크 라도..) |