2012-07-11 53 views
0

我們有兩臺PostgreSQL服務器。在Web服務器上1 pguser1是創建與Web應用程序一起工作所需的所有數據庫對象的關聯用戶。比方說,所有對象都在schema1
同樣,在Server2上pguser2創建從server1的Web服務器2.恢復具有更改權限的數據庫

我已經採取了架構的備份(自定義選項,在備份窗口從pgAdmin的)數據。當我還原到server2時,我希望對象的所有特權和所有權與pguser2一致,而不要與pguser1一起使用。

這是如何實現的?如果可能的話,還原期間的選項(pg_restore命令)將是首選。

回答

1

如果您對權限和對非登錄角色(a.k.a.組)的所有權非常簡化您的任務。我們將其命名爲foo_admin。在Server1上你

GRANT foo_admin TO pguser1; 

Server2上你

REVOKE foo_admin FROM pguser1; 
GRANT foo_admin TO pguser2; 

全部完成。或者更好的是:破解轉儲文件,並在該行

GRANT foo_admin TO pguser1; 

取代12 ..你恢復之前。當然,必須首先創建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; 

這在服務器1和服務器2上的工作原理完全相同。
More details and links in this related answer


您可能也有興趣在Grant Wizard of pgAdmin。詳細信息this related answer