- 論壇徽章:
- 0
|
本帖最后由 longbow0 于 2010-06-04 12:31 編輯
pgsql 沒有直接grant整個數(shù)據(jù)庫的權(quán)限給一個賬號的方法,只能對每個表逐一授權(quán)。當(dāng)表很多時就帶來了很大的困擾。下面是來自網(wǎng)上的一個方法。
>>> 原始網(wǎng)址
假設(shè)數(shù)據(jù)庫為 testdb,有 schema public,foo,bar。要授權(quán)的賬號是 tester,
- testdb=> SELECT 'GRANT ALL ON TABLE '||schemaname||'.'||tablename||' TO tester;'
- FROM pg_tables WHERE schemaname IN ('public', 'foo', 'bar')
- ORDER BY schemaname, tablename;
復(fù)制代碼 將會產(chǎn)生一系列的 SQL 語句,
- GRANT ALL ON TABLE public.table1 TO tester;
- GRANT ALL ON TABLE public.table2 TO tester;
- ...
復(fù)制代碼 復(fù)制并保存到文本文件中,如 grant.sql
然后,在終端里運(yùn)行
- $ psql -d testdb < grant.sql
復(fù)制代碼 完成。
此方法也可以推廣到 view,sequence 和 function。 |
|