データベースの変更を管理および実行するために、liquibase を使用しています。私たちの DEV 環境 (特にローカル マシン) では、テーブルを頻繁に再作成して白紙の状態にします。MySQL から Postgres に移行したばかりで、これらのテーブルの再作成に関連する問題に直面しています。
最初に、DB ユーザーにこれを付与しました。
GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA public TO mydbuser;
GRANT SELECT, USAGE ON ALL SEQUENCES IN SCHEMA public TO mydbuser;
これは、独自の DB に接続した後、 psqlを介して実行されます (public がデフォルト/唯一のスキーマです)。
liquibase にテーブルを再作成するように依頼するまでは、すべて問題ありません。この場合、すべてのテーブルが削除され、再度作成されます。
その後、myduserはテーブルに対する権限をすべて失ったようです。
いくつかのリソース (このような) によると、デフォルトの権限を変更する必要があるため、以下に従います。
GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA public TO mydbuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT,INSERT,UPDATE,DELETE ON TABLES TO mydbuser;
GRANT SELECT, USAGE ON ALL SEQUENCES IN SCHEMA public TO mydbuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, USAGE ON SEQUENCES TO mydbuser;
ただし、これは非常に論理的に見えますが、何も変わりませんでした。テーブルを再作成した後も、すべての許可 (選択を含む) は失われます。
私たちは何を間違っていますか、それとも他に何をする必要がありますか?
アップデート
\ddp の表示: デフォルトのアクセス権限
所有者 | スキーマ | タイプ | アクセス権
----------+--------+----------+----------------- ---
ポストグル | 公開 | シーケンス | mydb=rU/postgres
ポストグル | 公開 | テーブル | mydb=arwd/postgres