2013-02-08 42 views
1

我在我的PostgreSQL服務器(V9.2)和n個用戶(每個模式1個用戶)上有n個模式。我只想爲每個表分配SELECT, INSERT, UPDATE, DELETE, EXECUTEuser1schema1user2schema2,對於usernscheman的權限。PostgreSQL和GRANT語句

我不能這個說法做到這一點:

GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON SCHEMA schema 1 to user1 

因爲...ON SCHEMA只有CREATEUSAGE權限工作的條款。

那麼請將每個表上的所有這些特權分配給相關用戶的最快方法是什麼?我希望唯一的方法是不要做GRANT聲明每schema.table ...?

回答

2

我認爲你正在尋找的選項「架構中的所有表」:

GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON ALL TABLES IN SCHEMA schema_1 to user1; 

詳情請參見本手冊:我用pgAdmin3 http://www.postgresql.org/docs/current/static/sql-grant.html

+0

不錯!這正是我所期待的;) – 2013-02-08 14:56:23

0

儘管針對這個問題有很多不同的解決方案(包括手動修改授權表),但我個人建議使用一個工具來簡化它。

以pgAdmin3爲例,您可以簡單地批量更改架構內所有對象的權限。

http://www.pgadmin.org/docs/1.4/grantwiz.html

+0

但我不」 t知道如何啓動/執行此工具 – 2013-02-08 14:56:56

+1

您可以使用鼠標右鍵在表/數據庫/模式/等上執行它。 – Wolph 2013-02-09 02:08:11