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:データディレクトリを作成します(構成ファイルで以前に設定された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としてサービスを開始する
共有したログには、次の行が含まれます。
/usr/bin/postgresql-check-db-dir ${PGROOT}/data (code=exited, status=1/FAILURE)
とは $PGROOT
に設定?します$PGROOT/data
存在しますか?このディレクトリにはファイルinitがありますか?そうでない場合は、ディレクトリで initdb
を実行する必要があります。
初期化するには、空のデータディレクトリをルートとして作成し、chownを使用してそのディレクトリの所有権をデータベースユーザーアカウントに割り当て、suを実行してデータベースユーザーになり、initdb /path/to/data
。
postgresユーザーのパスワードの設定の後:
$ Sudo passwd postgres
次のコマンドを実行します。
$ su - postgres -c "initdb --locale en_US.UTF-8 -D '/var/lib/postgres/data'"