/var/run/postgresqlの権限を永久に変更します。

/var/run/postgresqlの権限を永久に変更します。

Linux Mint 17.0 Cinnamon Editionでは、これをすべてのpostgresデータベースのオプションとして使用したいと思います/var/run/postgresqlunix_socket_directories

pg_ctl -D postgres-data -o '-F -p 33311' startローカルデータベースを起動するコマンドを実行するたびにエラーが発生しますFATAL: could not create lock file "/var/run/postgresql/.s.PGSQL.33311.lock": Permission denied

AskUbuntu、StackOverflow、およびさまざまなフォーラムに対する多くの回答が示すように、ディレクトリに書き込むためにディレクトリの権限を実行またはsudo chmod 777 /var/run/postgresql変更する必要があります。sudo chown -R $USER:$USER /var/run/postgresqlその後、データベースを起動できます。ただし、再起動するたびに権限がなくなり、ディレクトリは誰にも書き込まれなくなり、ユーザーはpostgres-xcディレクトリのユーザーとグループの所有権を取り戻します。

権限の問題を削除sudo adduser $USER postgresまたは軽減することはありません。sudo adduser $USER postgres-xc

説明どおりに新規インストールを試みました。ここしかし、再起動にはまだ問題があります。

(ローカルデータベース設定ファイル)の値をに変更してみましたunix_socket_directories。これにより、再起動するたびに権限を更新せずに特定のデータベースを起動できます。ただし、データベースを動的に設定して起動するスクリプトもあります。そのため、これらのデータベースはデフォルトの構成ファイルを使用するため、書き込むことができず、スクリプトの実行時に権限拒否エラーが発生します。使用のためにこれらの設定を手動/プログラミング方法で即座に編集することはお勧めできません。/tmp./postgres-data/postgresql.confpg_ctl -D $DIR initdb && pg_ctl -D $DIR startpostgresql.confunix_socket_directories/var/run/postgresqlunix_socket_directories = '/tmp'

フラグを使用してオーバーライドする-oオプションpg_ctlunix_socket_directoriesあることを知っていますが、/tmpUbuntuを使用していない他の開発者がスクリプトを共有するので、誰もがそのディレクトリの使用を必ずしも制限したくありません。/tmp特に構成が若干異なる場合にはさらにそうです。誰もがデフォルトの場所を使用してインストールしたいと思います。個人的には、私は他のUbuntuパッケージとの互換性のためにデフォルトのディレクトリを維持することを好みます。たとえば、pgadmin は/var/run/postgresqlデフォルトでロックファイルを探します。

/etc/postgresql/9.3/main/pg_ctl.confまた、使用するたびにこれらのオプションを自動的に渡すように編集しようとしましたpg_ctl

# Automatic pg_ctl configuration
# This configuration file contains cluster specific options to be passed to
# pg_ctl(1).

pg_ctl_options = '-o "-c unix_socket_directories=/tmp -c unix_socket_group=jackson -c unix_socket_permissions=0777"'

しかし、これはうまくいきません。

システムを再起動するたびに実行する必要なく、/var/run/postgresqlこれをunix_socket_directoriesすべてのpostgresデータベースのオプションとして使用できる方法を教えてください。sudo chown -R $USER:$USER /var/run/postgresqlありがとうございます。

ベストアンサー1

/var/run/postgresql の権限は /usr/lib/tmpfiles.d/postgresql.conf から取得されます。

おすすめ記事