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


11

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

postgres =>データベースrich1を作成します。
データベースを作成
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
 テンプレート1 | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | = c / pgsys | 7345 kB | pg_default | 新しいデータベースのデフォルトテンプレート
                                                             :pgsys = CTc / pgsys
(5行)

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

postgres =>データベースrich2テーブルスペースpg_defaultを作成します。
エラー:テーブルスペースpg_defaultの権限が拒否されました

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

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

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

回答:


8

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


1
働いていること、ありがとう
アレックスBuzunov

1
私の命を救った-thx!@HuggieRichはそれを受け入れるはずです!
Ron
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.