0

2 つの PostgreSQL サーバーがあります。On web server1pguser1は、Web アプリケーションの操作に必要なすべてのデータベース オブジェクトを作成する関連付けられたユーザーです。すべてのオブジェクトが にあるとしましょうschema1
同様に、on server2pguser2は Web サーバー 2 のデータを作成します。

server1 からスキーマ バックアップ (pgadmin のバックアップ ウィンドウのカスタム オプション) を取得しました。server2 に復元するとき、オブジェクトのすべての特権と所有権pguser2pguser1.

これはどのように達成できますか?可能であれば、復元中のオプション (pg_restore コマンド) が優先されます。

4

1 に答える 1

1

GRANT非ログイン ロール (別名グループ) に権限と所有権を付与すると、タスクが大幅に簡素化されます。名前を付けましょうfoo_admin。server1であなた

GRANT foo_admin TO pguser1;

server2であなた

REVOKE foo_admin FROM pguser1;
GRANT foo_admin TO pguser2;

すべて完了。または、いっそのこと: ダンプ ファイルをハックして、次の行に置き換え1ます2

GRANT foo_admin TO pguser1;

..復元する前に。pguser2もちろん、最初に作成する必要があります。

ここで、server1 に何かを作成するときは、必ず確認してください。

ALTER TABLE wuchtel12.game OWNER TO foo_admin;

そして、特権を設定します。スキーマごとに権限を事前設定できます。何かのようなもの:

ALTER DEFAULT PRIVILEGES IN SCHEMA schema1
GRANT INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON TABLES
TO foo_admin;

ALTER DEFAULT PRIVILEGES IN SCHEMA schema1
GRANT SELECT, UPDATE, USAGE ON SEQUENCES
TO foo_admin;

これは、server1 と server2 で同じように機能します。
この関連する回答の詳細とリンク


pgAdmin の Grant Wizard にも興味があるかもしれません。この関連する回答の詳細

于 2012-07-11T20:33:12.240 に答える