pg_config는 확장 정보 및 클라이언트 프로그램이 PostgreSQL을 컴파일하고 링크하는 데 도움이되는 칭찬 정보입니다. 머신의 활성 PostgreSQL 인스턴스에 대해서는 아무것도 모르지만 바이너리 만 알 수 있습니다.
pg_hba.conf는 Pg 설치 방법에 따라 다른 여러 곳에 나타날 수 있습니다. 표준 위치는 데이터베이스의 data_directory에있는 pg_hba.conf입니다 (/ home, / var / lib / pgsql, / var / lib / postgresql / [version] /, / opt / postgres / 등에있을 수 있음). 그러나 사용자와 패키지 관리자는 원하는 곳에 배치 할 수 있습니다. 운수 나쁘게.
pg_hba.conf를 찾는 유일한 유효한 방법은 pg_hba.conf가있는 실행중인 PostgreSQL 인스턴스를 요청하거나 sysadmin이 어디에 있는지 묻는 것입니다. ing 스크립트가 Pg를 시작할 때 -c hba_file = / some / other / path와 같은 매개 변수를 전달할 수 있기 때문에 datadir의 위치를 묻고 postgresql.conf를 구문 분석하는 것에 의존 할 수도 없습니다.
당신이하고 싶은 것은 PostgreSQL에게 묻는 것입니다 :
SHOW hba_file;
이 명령은 수퍼 유저 세션에서 실행해야하므로 쉘 스크립팅의 경우 다음과 같이 작성할 수 있습니다.
psql -t -P format=unaligned -c 'show hba_file';
환경 변수 PGUSER, PGDATABASE 등을 설정하여 연결이 올바른지 확인하십시오.
그렇습니다. 이것은 사용자가 연결할 수 없다면 (예를 들어 pg_hba.conf 편집을 망친 후) pg_hba.conf를 찾을 수 없다는 점에서 다소 까다로운 문제입니다.
또 다른 옵션은 ps 명령의 출력을보고 포스트 마스터 데이터 디렉토리 인수 -D가 표시되는지 확인하는 것입니다. 예 :
ps aux | grep 'postgres *-D'
pg_hba.conf는 데이터 디렉토리 안에 있기 때문에 (데비안 / 우분투 나 다른 파생물을 사용하지 않고 패키지를 사용하지 않는 한).
Debian / Ubuntu 패키지에서 PostgreSQL이 설치된 Ubuntu 시스템을 대상으로하는 경우 좀 더 쉬워집니다. 누군가가 initdb가 홈 디렉토리에 datadir을 입력했거나 EnterpriseDB Pg를 / opt 등에 설치 한 소스 컴파일 Pg를 처리 할 필요가 없습니다. pg_wrapper, Debian / Ubuntu multi를 요청할 수 있습니다 -version Pg manager. 여기서 PostgreSQL은 pg_wrapper의 pg_lsclusters 명령을 사용합니다.
연결할 수 없으면 (Pg이 실행 중이 아니거나 연결하기 위해 pg_hba.conf를 편집해야 함) 시스템에서 pg_hba.conf 파일을 검색해야합니다. Mac 및 Linux에서는 sudo find / -type f -name pg_hba.conf와 같은 작업이 수행됩니다. 그런 다음 동일한 디렉토리에서 PG_VERSION 파일을 확인하여 둘 이상의 PostgreSQL 버전인지 확인하십시오. (pg_hba.conf가 / etc /에 있으면 이것을 무시하고 대신 상위 디렉토리 이름입니다). 동일한 PostgreSQL 버전의 데이터 디렉토리가 둘 이상인 경우 데이터베이스 크기를 살펴 봐야합니다. ps에서 실행중인 postgres의 명령 행을 확인하여 데이터 디렉토리 -D 인수가 편집중인 위치와 일치하는지 확인하십시오. .
/ubuntu/256534/how-do-i-find-the-path-to-pg-hba-conf-from-the-shell/256711