1

特定のスキーマを指定せずにロール (グループとして機能) に特権を追加する方法。基本的に、スキーマ( )を持つデータベースがありますmy_first_schema。複製によって複数の新しいスキーマを作成しmy_first_schemaます。次に、新しいデータベース ユーザーを作成し、このユーザーにグループ権限を付与します。

スキーマ名を知らずにグループロールに権限を追加する方法 (スキーマを動的に作成するため)?

更新 データベース内のすべてのスキーマに対するすべての権限を取り消し、動的に作成されたスキーマに選択権限を付与して、ユーザーが特定のスキーマにのみアクセスできるようにしました。しかし、すべてのデータベース内のすべてのテーブルに対するすべての権限が取り消され、ユーザーの特定のスキーマに SELECT 権限を付与した後、アクセス許可が拒否されましたというエラー メッセージが表示されます。

ALTER DEFAULT PRIVILEGES REVOKE ALL ON TABLES FROM PUBLIC;

ALTER DEFAULT PRIVILEGES IN SCHEMA john_smith_gmail_com GRANT SELECT ON TABLES TO john_smith_gmail_com;
4

1 に答える 1

1

はありますがALTER DEFAULT PRIVILEGES、テーブル、シーケンス、関数、および型でのみ使用できます。スキーマ用ではありません。この関連する回答の詳細:
データベース内の特定のスキーマのすべてを PostgreSQL のグループ ロールに付与する

ただし、スキーマを動的に作成する場合は、ロールに特権を動的に追加することもできます。たとえば、これらすべてを plpgsql 関数で実行している場合は、これを (DOラッパーなしで)組み込みます。

DO
$$
BEGIN
EXECUTE format('GRANT ALL ON SCHEMA %I TO mygroup', new_schema);
END
$$

format()Postgres 9.1 以降が必要です。動的 SQL の識別子は適切にエスケープ
してください。

于 2013-09-26T11:58:36.543 に答える