我也希望這個補助金能夠在未來繼續創建新的表格。 [...]我已經通過文檔挖掘,我似乎無法找到合適的解決方案。
因爲在9.0之前沒有。所有你可以得到的是設置現有的表的權限。您必須爲每個表執行一個GRANT
,因爲在9.0之前沒有「批量」模式。請參閱SQL語法的8.4和9.0:
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
[,...] | ALL [ PRIVILEGES ] }
ON [ TABLE ] tablename [, ...]
TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]
和9.0的位置:
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
[,...] | ALL [ PRIVILEGES ] }
ON { [ TABLE ] table_name [, ...]
| ALL TABLES IN SCHEMA schema_name [, ...] }
TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
新ALL TABLES IN SCHEMA
部分是你缺少一個。
另外:在數據庫級別設置權限與您的問題一樣,不會對您有所幫助:您將「僅」設置數據庫的權限,但不設置表中的任何「包含」內容。相關部分:
GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
ON DATABASE dbname [, ...]
TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]
這意味着你只能設置數據庫本身CREATE
,CONNECT
和TEMP
權限,但沒有SELECT
,INSERT
等
到目前爲止,對於壞的東西。你可以做有以下幾點:
這樣的查詢可能是這樣的:
select 'GRANT ALL ON ' || table_schema || '.' || table_name ||' to my_group;'
from information_schema.tables
where
table_type = 'BASE TABLE' and
table_schema not in ('pg_catalog', 'information_schema');
爲什麼不能升級?肯定有辦法升級PostgreSQL。目前的版本都可以從Postgres網站下載。 – 2012-07-22 14:08:23
確實有升級的方法,但我不希望供應商提供的軟件包能很好地集成,測試和理解。我們的計劃是在9.1的同時,Debian wheezy被宣佈爲穩定。 – pointyhat 2012-07-22 14:35:03
我永遠不會明白爲什麼有些操作系統會光顧用戶。 – 2012-07-22 14:37:30