쉘에서 pg_hba.conf의 경로를 어떻게 찾습니까?


101

쉘에서 pg_hba.conf의 경로를 얻고 싶습니다. 경로는 PostgreSQL 버전에 따라 다릅니다. 예를 들어 8.4 및 9.1의 경우 :

/etc/postgresql/8.4/main/pg_hba.conf
/etc/postgresql/9.1/main/pg_hba.conf

pg_config명령 을 시도했지만 이 정보가 포함되어 있지 않습니다.

이것은 pg_hba.conf편집을 위해 균일 한 명령을 사용 하고 다른 PostgreSQL 구성 파일을 사용할 수 있도록합니다 .

bash를 사용하고 있습니다.


1
pg_hba.conf는 어떻습니까?
Pramod

1
@Pramod 수십 명이 누워있을 수 있습니다. Postgres에서 어떤 것을 사용하고 있는지 알고 싶다면 어떻게해야합니까?
출혈 손가락

@BleedingFingers 설정에 따라 액세스 시간별로 필터링 할 수 있습니다. find / -name pg_hba.conf -amin -5(지난 5 분 동안 서버가 다시 시작된 -atime경우, 더 오래 전에 마지막으로 다시 시작한 경우 쉽게 변경할 수 있습니다 ). 또는 변경 시간보다 다른 액세스 시간 또는 다른 시간 기반 찾기 옵션 중 하나보다 액세스 시간을 기준으로 필터링 할 수 있습니다 lsof | grep pg_hba.conf.
Parthian Shot

답변:


151

pg_config확장 프로그램 및 클라이언트 프로그램이 PostgreSQL을 컴파일하고 링크하는 데 도움이되는 칭찬 정보입니다. 머신의 활성 PostgreSQL 인스턴스에 대해서는 아무것도 모르지만 바이너리 만 알 수 있습니다.

pg_hba.confPg 설치 방법에 따라 다른 많은 곳에 나타날 수 있습니다. 표준 위치는 pg_hba.conf내에서 data_directory(에서 할 수있는 데이터베이스의 /home, /var/lib/pgsql, /var/lib/postgresql/[version]/, /opt/postgres/그들이 원하는 위치하지만, 사용자와 배포자를 넣을 수 있습니다, 등 등 등). 운수 나쁘게.

유효한 유일한 방법 pg_hba.conf은 실행중인 PostgreSQL 인스턴스가 어디에 있는지 pg_hba.conf물어 보거나 sysadmin에게 어디에 있는지 물어 보는 것입니다. postgresql.confinit 스크립트가 -c hba_file=/some/other/pathPg를 시작할 때 와 같은 매개 변수를 전달할 수 있기 때문에 datadir의 위치를 ​​묻고 파싱하는 것에 의존 할 수도 없습니다 .

당신이하고 싶은 일은 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데비안 / 우분투 또는 파생 제품을 사용하지 않고 패키지를 사용하지 않는 한 데이터 디렉토리 안에 있기 때문 입니다.

데비안 / 우분투 패키지에서 PostgreSQL이 설치된 우분투 시스템을 대상으로한다면 좀 더 쉬워집니다. 누군가가 initdb자신의 홈 디렉토리에 datada 또는 / opt 등에 EnterpriseDB Pg를 설치하는 소스 컴파일 된 소스 Pg를 다룰 필요가 없습니다 . pg_wrapperDebian / Ubuntu 다중 버전 Pg를 요청할 수 있습니다. 여기서 PostgreSQL은의 명령 을 사용 합니다pg_lsclusterspg_wrapper .

연결할 수없는 경우 (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 버전에 대해 하나 이상의 데이터 디렉토리가있는 경우 데이터베이스 크기를 살펴 봐야합니다. 실행중인 postgres의 명령 행 ps에서 데이터 디렉토리 -D인수가 편집중인 위치 등과 일치하는지 확인하십시오.


이것은 psql: invalid port number: "format=unaligned"p9.3 명령을 실행할 때 9.3에 유효하지 않을 수 있습니다 .
jcollum

@jcollum 아니요, 오타 일뿐입니다. -P아닙니다 -p. 결정된.
Craig Ringer

이것은 PostgreSQL 버전이 두 개 이상 설치된 경우 작동하는 유일한 대답입니다.
bonh

Postges가 이것을 표준화 할 희망이 있습니까? 그것은 설치 두통에 많은 도움이 될 것입니다 ...
Scott Skiles

@ScottSkiles PostgreSQL은 그것을 제어하지 않으며, 패키지와 배포자에 달려 있으며, 패키지 위치와 배포자 모두는 어디에 있어야하는지에 대한 강한 (그리고 다른) 의견을 가지고 있습니다.
크레이그 링거

21

이것이 내가하는 방법입니다.

john@host:~$ ls /etc/postgresql
9.1
john@host:~$ sudo vim /etc/postgresql/9.1/main/pg_hba.conf

경로는 다음과 같습니다. /etc/postgresql/[VERSION]/main/pg_hba.conf


2

구성 파일 감지에 다음을 사용하고 있습니다.

$(ls /etc/postgresql/*/main/pg_hba.conf)
$(ls /etc/postgresql/*/main/postgresql.conf)

1

pg_hba.conf기본 비주얼 편집기 (vim, emacs, nano, joe 등)로 올바른 것을 편집하는 것은 다음과 같습니다.

$VISUAL /etc/postgresql/$(ls /etc/postgresql)/main/pg_hba.conf



-2

파일의 위치를 ​​알려면 다음을 입력하십시오.

pg_lsclusters

pg_hba.conf 파일을 업데이트하려면 다음 명령을 실행하십시오 : $ sudo nano /etc/postgresql/9.1/main/pg_hba.conf
nirvanastack

-bash : pg_lsclusters : 명령을 찾을 수 없음
Mona Jalal
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.