web-dev-qa-db-ja.com

私の環境でPostgresセットアップを取得しようとしましたが、intidbへのアクセス許可を取得できないようです

最近のRailsCastでPostgreSQLを設定していますが、initdb /usr/local/var/postgresコマンドを実行できません。実行するたびに、次のエラーが発生します。

The files belonging to this database system will be owned by user "Construct".
This user must also own the server process.

The database cluster will be initialized with locale en_US.UTF-8.
The default database encoding has accordingly been set to UTF8.
The default text search configuration will be set to "english".

creating directory /usr/local/var/postgres ... initdb: could not create directory "/usr/local/var": Permission denied
28
Jimmy Odom

これはうまくいくはずです:

# Sudo mkdir /usr/local/var/postgres
# Sudo chmod 775 /usr/local/var/postgres
# Sudo chown construct /usr/local/var/postgres
# initdb /usr/local/var/postgres

構成の代わりにユーザー名を使用してください。したがって、コンピューターのユーザー名がWDurantの場合、コードは次のようになります。

# Sudo chown wdurant /usr/local/var/postgres
55
Gaurav Swaroop

Arch Linuxで実行する場合は、次のように使用します。

Sudo mkdir /var/lib/postgres
Sudo chmod 775 /var/lib/postgres
Sudo chown postgres /var/lib/postgres

Sudo -i -u postgres

[postgres]$ initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data'
[postgres]$ exit

Sudo systemctl start postgresql.service

Sudo -i -u postgres
7
Bodhi94

実際にはSUユーザーにpostgresする必要があります

  • Sudo su - postgres

次に、コマンドを実行できます

  • initdb -E UTF8(UTF8は非常に柔軟であり、[明示的に指定しない限り]すべてのクラスターがUTF8として作成されるため、今すぐ設定することをお勧めします)

次に、ユーザーを作成する必要があります(まだ作成されていない場合)

  • $ createuser -s -U postgres
  • $ Enter name of role to add: {{ my login name }}(これはConstructのようです)

その後、postgresユーザーを終了して、独自のデータベースを作成できます

  • $ createdb
5
swasheck

どのユーザーがinitdbを実行していますか? rootでない場合は、/ usr/localにディレクトリを作成する権限がない可能性があります。/usr/local/var/postgresをrootとして作成し、それを構築して構築することをお勧めします。

# mkdir -m 0700 -p /usr/local/var/postgres
# chown construct /usr/local/var/postgres

次に、initdb(構成として実行)に権限が必要です。

また、Unixのユーザー名は通常すべて小文字です(ただし、大文字と小文字も区別されます)。あなたはsureあなたの構成ユーザーが実際に大文字で書かれていますか?もしそうなら、あなたは本当に確信がありますか大文字にしたい—多くのことが壊れます。

(参考:このようなUnixの質問については、 nix.SE または Ask Ubunt より迅速な回答を提供することがあります)

3
derobert