Arch Linux では、initdb コマンドを実行すると、次のメッセージが表示されます。
Success. You can now start the database using:
pg_ctl -D /var/lib/postgres/data -l logfile start
postgres ユーザーとして、上記のコマンドを使用して起動しようとすると、エラーが発生します。
FATAL: could not create lock file "/run/postgresql/.s.PGSQL.5432.lock" no such file or directory
postgres ユーザーに切り替えて、上記のコマンドで起動しようとすると、次の結果が得られます。
pg_ctl: could not open PID file "/var/lib/postgres/data/postmaster.pid" : Permission denied
次に、上記のコマンドを sudo として実行してみます。
sudo pg_ctl -D /var/lib/postgres/data -l logfile start
そして次のようになります:
pg_ctl: cannot run as root.
答え1
パッケージ化された起動スクリプトを使用せずに postgres を手動で起動する場合は、スクリプトが実行する操作を実行する必要があります。
/run/postgresql
他のユーザーに対して書き込み権限postgres
と読み取り権限を持つディレクトリを作成します。/run
通常は RAM ディスクにマウントされるため、空であるのが普通です。pg_ctl
ユーザーとして排他的に実行しますpostgres
。そのためには を使用する必要があるsudo -u postgres
場合に使用します。sudo
あなたが言及した最初のエラーは #1 で解決され、他の 2 つは #2 で解決されます。または、OS のパッケージに付属する起動スクリプトを使用するだけで、これらの詳細を処理するために存在するため、学習する必要はありません。
のドキュメントhttps://wiki.archlinux.org/index.php/PostgreSQL伝える:
これは、systemctl enable postgresql.service
そしてsystemctl start postgresql.service
、対照的ににpg_ctl [...options...] start
。
答え2
参考までに付け加えておきますが、ちょうど今、Ubuntu 上の Postgresql 10 で、これと非常に関連した問題が発生しました。実際、could not open PID file “/var/lib/postgres/data/postmaster.pid”
それが私をここに導いたのです。ここで学んだことや、他の場所で学んだことをすべて試しましたが、すべて無駄でした。そこで、昔ながらの再起動に頼りました。そして、すべてうまくいきました。まあ、いいでしょう。再起動を試してみなさいということ以外、あまり学んだり、教えられたりしたとは言えません...