Postgresでテーブルスペースを作成しようとしていますが、所有権の問題が発生しています。私が使用しているコマンドは次のとおりです。
CREATE TABLESPACE magdat OWNER maggie LOCATION '/home/john/BSTablespace'
エラーが発生します:
ERROR: could not set permissions on directory "/home/john/BSTablespace": Operation not permitted
フォルダはpostgres:postgresに属しており、maggieに変更しようとしましたが、次のようになります。
chown maggie:postgres /home/john/BSTablespace
私は得る:
chown: invalid user: `maggie:postgres'
なぜユーザーが存在しないのですか? postgres内のユーザーをリストすると、表示されます。私が間違っている可能性のあるアイデアはありますか?
問題は親ディレクトリ「/ home/john」のパーミッションにあると推測するのは危険です。ホームディレクトリは、おそらくユーザーだけがアクセスできるように設定されています(つまり、chmod 700)(ホームディレクトリをchmod 700にするのは良いことですが、変更しないでください)。
次のようなことをします:
mkdir /BSTablespace chown postgres:postgres /BSTablespace
その後
CREATE TABLESPACE magdat OWNER maggie LOCATION '/ BSTablespace';
正常に動作するはずです。
ユーザーマギーについて:データベースユーザーはOSユーザーと同じではありません。これは、maggieという名前のユーザーを両方の場所に配置できないということではありませんが、そのためには、データベースとOSの両方にユーザーを作成する必要があります。
MacにPostgresをインストールし、PgAdmin
を使用してデータベースやテーブルスペースなどを作成しようとしている場合。PgAdmin Utility
がpostgres
アカウントで実行されていることを知っておく必要があります。 postgresデータベースとユーティリティをインストールしたときに作成されたものです。
postgres account
は_postgres
グループの一部です
(dscacheutil -q group|grep -i postgres
コマンドは、postgres
アカウントに関連付けられたグループを一覧表示します)
ベストプラクティスは、テーブルスペースを格納するためにroot(/
)の下に新しいディレクトリを作成することです(コマンドを使用して、/postgresdata
と呼び、postgres:_postgres
をそのディレクトリの所有者にします。未満)
Sudo chown postgres:_postgres /postgresdata
これはあなたのためにそれをするはずです。次に、固有の表スペースごとに/postgresdata
の下にサブディレクトリーを作成できます。