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를 실행할 수 없습니다.

댓글

  • 설치하려는 Postgres 버전과 패키지를받은 위치를 알려주십시오. 오류 메시지는 충분히 명확합니다. role "postgres" does not exist : " postgres ". 동일한 컴퓨터에 유일한 Postgres 설치입니까? (따라서 올바른 인스턴스에 연결 하시겠습니까?) 그렇다면 질문은 설치시 어떤 데이터베이스 역할이 설정되는지입니다. 저는 ' Void Linux 또는 XPBS 패키지 관리자를 더 많이 알지 못합니다. superuser.SE 또는 unix.SE에 더 적합 할 수 있습니다.
  • 버전은 postgresql-9.6.10_1입니다. 예, ' 내 시스템에 PostgreSQL을 설치하는 유일한 방법이며 실행중인 서버 인스턴스가 하나뿐입니다. 그럼 질문을 옮겨야하나요? 저는 ' 모릅니다 …
  • 주변에 VOID Linux 또는 XPBS 전문가가 있는지 확실하지 않습니다. 핵심은 Postgres 역할은 initdb에서 생성 한 다음 동일한 이름의 OS 사용자와 연결하여 " trust

    인증 방법. 분명히 " postgres " (정상적인 기본값)가 아닙니다.

  • 나도 많이 생각했지만 ' 역할을 찾는 데 부족했습니다. 질문에서 언급했듯이 ' 전혀 psql을 사용할 수 없으므로 ' 기존 역할을 나열 할 수 없습니다. 아마도 postgresql.conf 파일에 관련성이 기록되어 있습니까? 내가 찾아야 할 것? 저는 ' 역할을 탐내고 session_replication_role = 'origin'를 받았습니다. 그다지 사용하지 않는 것 같습니다.
  • :%s/XPBS/XBPS/g

답변

정답은 아니지만 initdb에 대한 설명서 를 참조하세요.

-U username
--username= username

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

의미 …

  1. initdb를 OS 사용자로 실행할 때 postgres에서 초기 DB 수퍼 유저 역할은 표준 Postgres에서도 postgres입니다. 이 규칙을 따르는 시스템에 대해 들었습니다 …

  2. --username=postgres

강제 할 수 있어야합니다.

초기 수퍼 유저 용-패키지가이 모든 것을 심각하게 엉망으로 만들지 않는 한

댓글

  • 와우 , 이것은 나를 올바른 방향으로 가리 켰습니다. 어딘가에서 -U 플래그를 보았고 여기에서 왔음을 알았습니다. stackoverflow.com/questions/50746147/ … Laurenz '의 답변을 잘못 읽었을 수도 있지만 initdb -U UTF8 -D /var/lib/postgresql/data를 실행하여 초기 DB 수퍼 유저 역할은 다음과 같습니다. 어쨌든 나는 피로로 인해 전체 시스템이 거의 충돌하게되었습니다. 상당히 생산적인 날. Erwin의 헌신에 감사드립니다. 도움에 감사드립니다.
  • @Jakov : -U UTF8. 아야. 내가 생각하기에 -E UTF8로 의도 되었나요? 은밀한 스크램블 편지로 인해 하루를 잃어 죄송합니다. 그런 다음 다시 : 질문에서 실제 명령을 표시했다면 하루 반을 절약했을 수 있습니다 …

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다