Void Linux에서 PostgreSQL 서버 실행. 설치 후 OS 사용자 “postgres”로 initdb
실행 :
[user@host]$ sudo -u postgres -i $ initdb -D "/var/lib/postgresql/data"
수신 된 출력 :
디렉토리 생성 / var / lib / postgresql / data … ok 하위 디렉토리 생성 … ok 기본 max_connections 선택 … 100 기본 shared_buffers 선택 … 128MB 동적 공유 선택 메모리 구현 … posix 구성 파일 생성 중 … ok 부트 스트랩 스크립트 실행 중 … ok 부트 스트랩 후 초기화 수행 … locale : LC_MESSAGES를 기본 로케일로 설정할 수 없음 : 해당 파일 또는 디렉토리 없음 ok 데이터를 디스크에 동기화 … ok
경고 : 로컬 연결에 “신뢰”인증 활성화 pg_hba.conf를 편집하거나 다음 번에 -A 또는 –auth-local 및 –auth-host 옵션을 사용하여이를 변경할 수 있습니다. initdb를 실행합니다.
성공. 이제 다음을 사용하여 데이터베이스 서버를 시작할 수 있습니다. pg_ctl -D / var / lib / postgresql / data -l 로그 파일 시작
그런 다음 계속해서 서비스를 만들고 “postgres”에 소유권을 부여한 다음 시작했습니다.
[user@host]$ ln -s /etc/sv/postgresql /var/service [user@host]$ sudo chown postgres: /var/service/postgresql [user@host]$ sudo sv start postgresql [user@host]$ ls -l /var/service/postgresql lrwxrwxrwx 1 postgres postgres 18 nov 2 17:05 /var/service/postgresql -> /etc/sv/postgresql
실행 중 :
[user@host]$ sudo -u postgres psql ...
다음 오류가 표시됩니다.
psql: FATAL: role "postgres" does not exist
를 “postgres”로 변경했지만 운이 없습니다.
다음은 내 출처입니다.
https://wiki.voidlinux.eu/PostgreSQL
PostgreSQL 오류 : 치명적 : 사용자 이름역할이 없습니다.
다음에 무엇을해야할지 모르겠습니다.
편집 : psql : 치명적 : “postgres”역할이 실패했습니다. 존재 . 어떤 사용자로 psql
를 실행하더라도 동일한 오류가 발생하므로 psql -l
를 실행할 수 없습니다.
댓글
답변
정답은 아니지만 initdb
에 대한 설명서 를 참조하세요.
-U
username
--username=
username
데이터베이스 수퍼 유저의 사용자 이름을 선택합니다. 기본값은
initdb
를 실행하는 유효 사용자의 이름입니다. 수퍼 유저의 이름이 무엇인지는 실제로 중요하지 않지만 운영 체제 사용자의 이름이 다르더라도 관례적인 이름 인 postgres를 유지하도록 선택할 수 있습니다.
의미 …
-
initdb
를 OS 사용자로 실행할 때postgres
에서 초기 DB 수퍼 유저 역할은 표준 Postgres에서도postgres
입니다. 이 규칙을 따르는 시스템에 대해 들었습니다 … -
--username=postgres
을 강제 할 수 있어야합니다.
초기 수퍼 유저 용-패키지가이 모든 것을 심각하게 엉망으로 만들지 않는 한
댓글
- 와우 , 이것은 나를 올바른 방향으로 가리 켰습니다. 어딘가에서
-U
플래그를 보았고 여기에서 왔음을 알았습니다. stackoverflow.com/questions/50746147/ … Laurenz '의 답변을 잘못 읽었을 수도 있지만initdb -U UTF8 -D /var/lib/postgresql/data
를 실행하여 초기 DB 수퍼 유저 역할은 다음과 같습니다. 어쨌든 나는 피로로 인해 전체 시스템이 거의 충돌하게되었습니다. 상당히 생산적인 날. Erwin의 헌신에 감사드립니다. 도움에 감사드립니다. - @Jakov :
-U UTF8
. 아야. 내가 생각하기에-E UTF8
로 의도 되었나요? 은밀한 스크램블 편지로 인해 하루를 잃어 죄송합니다. 그런 다음 다시 : 질문에서 실제 명령을 표시했다면 하루 반을 절약했을 수 있습니다 …
role "postgres" does not exist
: " postgres ". 동일한 컴퓨터에 유일한 Postgres 설치입니까? (따라서 올바른 인스턴스에 연결 하시겠습니까?) 그렇다면 질문은 설치시 어떤 데이터베이스 역할이 설정되는지입니다. 저는 ' Void Linux 또는 XPBS 패키지 관리자를 더 많이 알지 못합니다. superuser.SE 또는 unix.SE에 더 적합 할 수 있습니다.initdb
에서 생성 한 다음 동일한 이름의 OS 사용자와 연결하여 " trust인증 방법. 분명히 " postgres " (정상적인 기본값)가 아닙니다.
session_replication_role = 'origin'
를 받았습니다. 그다지 사용하지 않는 것 같습니다.:%s/XPBS/XBPS/g