web-dev-qa-db-ja.com

postgresqlでテーブルスペースを作成する

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内のユーザーをリストすると、表示されます。私が間違っている可能性のあるアイデアはありますか?

15
The_Denominater

問題は親ディレクトリ「/ home/john」のパーミッションにあると推測するのは危険です。ホームディレクトリは、おそらくユーザーだけがアクセスできるように設定されています(つまり、chmod 700)(ホームディレクトリをchmod 700にするのは良いことですが、変更しないでください)。

次のようなことをします:

 mkdir /BSTablespace
chown postgres:postgres /BSTablespace

その後

 CREATE TABLESPACE magdat OWNER maggie LOCATION '/ BSTablespace'; 

正常に動作するはずです。

ユーザーマギーについて:データベースユーザーはOSユーザーと同じではありません。これは、maggieという名前のユーザーを両方の場所に配置できないということではありませんが、そのためには、データベースとOSの両方にユーザーを作成する必要があります。

22
gsiems

MacにPostgresをインストールし、PgAdminを使用してデータベースやテーブルスペースなどを作成しようとしている場合。PgAdmin Utilitypostgresアカウントで実行されていることを知っておく必要があります。 postgresデータベースとユーティリティをインストールしたときに作成されたものです。

postgres account_postgresグループの一部です

dscacheutil -q group|grep -i postgresコマンドは、postgresアカウントに関連付けられたグループを一覧表示します)

ベストプラクティスは、テーブルスペースを格納するためにroot(/)の下に新しいディレクトリを作成することです(コマンドを使用して、/postgresdataと呼び、postgres:_postgresをそのディレクトリの所有者にします。未満)

Sudo chown postgres:_postgres /postgresdata

これはあなたのためにそれをするはずです。次に、固有の表スペースごとに/postgresdataの下にサブディレクトリーを作成できます。

1
KPonn