32

最近の 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
4

5 に答える 5

71

これは問題なく機能するはずです。

# 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 $(whoami) /usr/local/var/postgres
于 2013-03-10T08:05:30.207 に答える
6

あなたは実際にユーザーにする必要が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
于 2012-05-03T17:48:16.133 に答える
3

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

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

次に、initdb(コンストラクトとして実行)に権限が必要です。

また、Unix のユーザー名は通常すべて小文字であることに注意してください (大文字と小文字も区別されます)。Construct ユーザーが実際に大文字になっていると確信していますか? もしそうなら、それを大文字にしたいと本当に思っていますか? - 多くのものが壊れます。

(参考までに: このような Unix に関する質問については、Unix.SEまたはAsk Ubuntu でより迅速な回答が得られる場合があります)

于 2012-05-03T17:40:32.650 に答える