Linux Mint 17.0 Cinnamon Editionでは、これをすべてのpostgresデータベースのオプションとして使用したいと思います/var/run/postgresql
。unix_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.conf
pg_ctl -D $DIR initdb && pg_ctl -D $DIR start
postgresql.conf
unix_socket_directories
/var/run/postgresql
unix_socket_directories = '/tmp'
フラグを使用してオーバーライドする-o
オプションpg_ctl
がunix_socket_directories
あることを知っていますが、/tmp
Ubuntuを使用していない他の開発者がスクリプトを共有するので、誰もがそのディレクトリの使用を必ずしも制限したくありません。/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 から取得されます。