posgtresql을 시작할 수 없습니다. 이유가 불분명합니다.

posgtresql을 시작할 수 없습니다. 이유가 불분명합니다.

pacman을 통해 postgresql을 설치했습니다. 이제 실행하려고합니다.

    $ sudo systemctl start postgresql
    Job for postgresql.service failed because the control process exited with error code.
    See "systemctl status postgresql.service" and "journalctl -xe" for details.

그런 다음:

    $ sudo systemctl status postgresql
    ● postgresql.service - PostgreSQL database server
       Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
       Active: failed (Result: exit-code) since Sun 2016-07-10 15:30:47 UTC; 17s ago
      Process: 19468 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGROOT}/data (code=exited, status=1/FAILURE)

    Jul 10 15:30:47 my_comp systemd[1]: Starting PostgreSQL database server...
    Jul 10 15:30:47 my_comp systemd[1]: postgresql.service: Control process exited, code=exited status=1
    Jul 10 15:30:47 my_comp systemd[1]: Failed to start PostgreSQL database server.
    Jul 10 15:30:47 my_comp systemd[1]: postgresql.service: Unit entered failed state.
    Jul 10 15:30:47 my_comp systemd[1]: postgresql.service: Failed with result 'exit-code'.

무슨 문제가 있나요?

답변1

다음 단계에 따라 문제를 해결하세요.

1단계: 데이터 디렉터리 생성(이전에 구성 파일에 설정된 PGROOT 변수 기반)

sudo mkdir /var/lib/postgres/data

2단계: /var/lib/postgres/data의 소유권을 사용자 "postgres"로 설정

chown postgres /var/lib/postgres/data

3단계: "postgres" 사용자로 데이터베이스를 시작합니다.

sudo -i -u postgres
initdb  -D '/var/lib/postgres/data'

4단계: 루트로 서비스 시작

답변2

/usr/share/doc/postgresql/README.rpm-dist루트 사용자로 다음 명령을 실행하십시오.

postgresql-setup --initdb
systemctl restart postgresql.service
systemctl enable postgresql.service

답변3

공유한 로깅에는 다음 줄이 포함됩니다.

/usr/bin/postgresql-check-db-dir ${PGROOT}/data (code=exited, status=1/FAILURE)

설정은 무엇입니까 $PGROOT? 존재 합니까 $PGROOT/data? 이 디렉토리에 init 파일이 있습니까? 그렇지 않은 경우 실행해야 할 수도 있습니다.initdb디렉토리에.

초기화하려면 루트로 빈 데이터 디렉터리를 만든 다음 chown을 사용하여 데이터베이스 사용자 계정에 디렉터리 소유권을 할당한 다음 su를 데이터베이스 사용자로 실행하여 를 실행합니다 initdb /path/to/data.

답변4

뒤쪽에암호를 설정하세요사용자 의 경우 postgres:

$ sudo passwd postgres 

다음 명령을 실행하십시오.

$ su - postgres -c "initdb --locale en_US.UTF-8 -D '/var/lib/postgres/data'"

관련 정보