AWS RDS DBインスタンスをPostgresqlからアップグレードしましたv9.6
からv10.6-R1
。これは、ダッシュボードの[データベース]セクションの[変更]タブを使用して手動で行いました。その直後、マスターユーザーとして、public
スキーマで操作を実行する機能を失いました。
問題なくDBに接続できますが、パブリックスキーマのテーブルでselectステートメントを実行しようとすると、このエラーが表示されます:ERROR: permission denied for schema public
rds_superuser
ユーザーはもうログインできません(freetiersuperuser
は私のマスターユーザーの名前ですが、その名前は誤解を招きます):
master_prod=> \du+
List of roles
Role name | Attributes | Member of | Description
-------------------+------------------------------------------------------------+-------------------------------------------------------------+-------------
freetiersuperuser | Create role, Create DB +| {rds_superuser} |
| Password valid until infinity | |
rds_iam | Cannot login | {} |
rds_password | Cannot login | {} |
rds_replication | Cannot login | {} |
rds_superuser | Cannot login | {pg_monitor,pg_signal_backend,rds_replication,rds_password} |
rdsadmin | Superuser, Create role, Create DB, Replication, Bypass RLS+| {} |
| Password valid until infinity | |
rdsrepladmin | No inheritance, Cannot login, Replication | {} |
さらに、ANALYZE VERBOSE;
機能し、公開テーブルの統計情報を取得できます。
それが役立つ場合は、ここに私のデフォルトのアクセス権限があります
master_prod=> \ddp
Default access privileges
Owner | Schema | Type | Access privileges
-------+--------+------+-------------------
(0 rows)
何がうまくいかなかったか、これを修正するために何ができるかについてのアイデアはありますか?私はすべての提案に感謝します。
ありがとうございました
したがって、これらの2つのステートメントを実行すると、私の問題が解決されました(public
スキーマ内の何にもアクセスできないため):
master_prod=> ALTER SCHEMA public OWNER to freetiersuperuser;
ALTER SCHEMA
master_prod=> GRANT ALL ON SCHEMA public TO freetiersuperuser;
GRANT
しかし、私のrds_superuser
ロールの属性は変更されていません。これが正常であるかどうかを確実に理解したいと思います(私はそうではないと思います):
Role name | Attributes | Member of
-------------------+------------------------------------------------------------+-------------------------------------------------------------
freetiersuperuser | Create role, Create DB +| {rds_superuser}
| Password valid until infinity |
rds_iam | Cannot login | {}
rds_password | Cannot login | {}
rds_replication | Cannot login | {}
rds_superuser | Cannot login | {pg_monitor,pg_signal_backend,rds_replication,rds_password}
rdsadmin | Superuser, Create role, Create DB, Replication, Bypass RLS+| {}
| Password valid until infinity |
rdsrepladmin | No inheritance, Cannot login, Replication | {}