2013-02-08 191 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