2017-03-27 13 views
0

부팅 할 때 monit의 bash 파일을 실행 중이며 그 bash 파일은 내 postgres 서버를 시작합니다. 내 데이터베이스 디렉토리가없는 경우부팅시 포스트그레스 사용자 생성

, 내가 할 :

1 initdb에을 (PostgreSQL의/데이터 /) SU - 에지 -c '는/usr/빈/initdb에 -D $ {DBDIR}'

(PostgreSQL의/데이터 /)에

2 개 사본 수정 위해서는 pg_hba.conf 및 postgresql.conf의 파일

3 내 서버 스와 시작 - {가장자리 -c "는/usr/빈/pg_ctl -w -D $ DBDIR을 } -l 로그 파일 시작 "

4 포스트그레스 createuser - SU - $ 사용자 -c '$ {DBDIR} -e -s 포스트 그레스'

PostgreSQL의가// 파일을 생성 된 데이터는 서버가 시작 복사 bash는 파일의 실행 후, 하지만 사용자입니다 psql의에/usr/빈/psql의의 -U 포스트 그레스 : FATAL : 그래서 내 데이터베이스

오류에 액세스 할 수 없습니다 생성되지 역할 "포스트 그레스는"나는 당신의 4 단계를 해독 할 수

답변

0

존재하지 않지만 postgres 역할이 존재하지 않는 이유는 1 단계가 사용자에 의해 실행되기 때문입니다. edge-U을 통해 postgres 롤의 생성을 요청하지 않으므로 대신 수퍼 유저로 egde 역할을 생성합니다. initdb 문서 당

:
--username

-U 사용자 이름 = 사용자 이름

는 데이터베이스 슈퍼 유저의 사용자 이름을 선택합니다. 이 의 기본값은 initdb을 실행하는 유효 사용자의 이름입니다. 수퍼 유저의 이름이 무엇인지 중요한 것은 실제로 이 아니지만 운영 체제 사용자 이름이 인 경우에도 은 관습 적 이름 인 postgres를 유지하도록 선택할 수 있습니다.

하나는 initdb -U postgres을하거나 할 때마다 것을 입력 방지하기 위해 edgePGUSER 환경 변수를 다음과 같이 유지하지만 psql -U edgepsql를 시작하거나 설정 edge라는 이름의 유저를 선호하는 경우.

+0

고마워요, 나는 그 부분을 읽었지 만, 이유가 무엇이든, -U가 생성 된 수퍼 유저의 이름을주기 위해 사용되었다는 것을 읽었습니다. 은 initdb 전에 수퍼 유저를 생성 할 수 없다는 사실 때문에 그냥 잡았어야합니다. – DavidG