最近の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
これはうまくいくはずです:
# 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
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
実際には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
どのユーザーが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 より迅速な回答を提供することがあります)