web-dev-qa-db-ja.com

「データベースの作成」コマンドでテーブルスペースを指定すると、PostgreSQLの権限エラーが発生するのはなぜですか?

デフォルトのテーブルスペースを明示的に指定せずにPostgreSQLでデータベースを作成すると、データベースは問題なく作成されます(pgsysユーザーとしてログインしています)。

postgres =>データベースを作成rich1; 
 CREATE DATABASE 
 postgres =>\l + 
データベースのリスト
名前|オーナー|エンコーディング|照合| Ctype |アクセス権限|サイズ|テーブルスペース|説明
 ----------- + ---------- + ---------- + ---------- --- + ------------- + -------------------------------- ----- + ----------- + ------------ + ------------------- ------------------------- 
 postgres | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 7455 kB | pg_default |デフォルトの管理接続データベース
 rdsadmin | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin = CTc/rdsadmin |アクセスなし| pg_default | 
 rich1 | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 7233 kB | pg_default | 
 template0 | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | = c/rdsadmin | 7345 kB | pg_default |変更できない空のデータベース
:rdsadmin = CTc/rdsadmin 
 template1 | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | = c/pgsys | 7345 kB | pg_default |新しいデータベースのデフォルトテンプレート
:pgsys = CTc/pgsys 
(5行)

ご覧のとおり、データベースはpg_defaultテーブルスペースに配置されていますが、テーブルスペース句でデフォルトのテーブルスペースを指定すると(これもpgsysとしてログインします)、権限エラーが発生します。

postgres => create database rich2 tablespace pg_default; 
 ERROR:permission denied for tablespace pg_default

そのユーザーの権限は次のとおりです。

postgres =>\du pgsys 
ロールのリスト
ロール名|属性| 
のメンバー------------ + ------------- + ----------------- 
 pgsys |役割を作成| {rds_superuser} 
:DBを作成

これはPostgreSQLのエラーですが、違いが生じる場合に備えて、これはAWS Auroraインスタンスであることを述べておきます。

11
HuggieRich

少なくともpgAdmin v4のトリックは次のとおりです。テーブルスペースを空白のままにします。データベースを作成するとき、デフォルトで「pg_default」になります。

8
Logan