web-dev-qa-db-ja.com

postgresqlを起動できません。理由は明確ではありません

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'.

どうしたの?

10
Matudi

次の手順で問題が解決しました

手順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:rootとしてサービスを開始する

11
Rakib

共有したログには、次の行が含まれます。

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

とは $PGROOT に設定?します$PGROOT/data存在しますか?このディレクトリにはファイルinitがありますか?そうでない場合は、ディレクトリで initdb を実行する必要があります。

初期化するには、空のデータディレクトリをルートとして作成し、chownを使用してそのディレクトリの所有権をデータベースユーザーアカウントに割り当て、suを実行してデータベースユーザーになり、initdb /path/to/data

0
Mark Stosberg

postgresユーザーのパスワードの設定の後:

$ Sudo passwd postgres 

次のコマンドを実行します。

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