2

我的 PostgreSQL 服务器(V9.2)上有 n 个模式和 n 个用户(每个模式 1 个用户)。我只想在每个表上分配to 、 for SELECT, INSERT, UPDATE, DELETE, EXECUTEto 、for to的权限。user1schema1user2schema2usernscheman

我不能用这个语句做到这一点:

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

因为该子句...ON SCHEMA仅适用于CREATEUSAGE特权。

那么将每个表上的所有这些权限分配给相关用户的最快方法是什么?我希望唯一的方法是不要每……做一个GRANT声明schema.table

4

2 回答 2

3

我认为您正在寻找“在模式中的所有表上”选项:

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

有关详细信息,请参阅手册:http ://www.postgresql.org/docs/current/static/sql-grant.html

于 2013-02-08T14:31:27.047 回答
0

尽管有很多不同的解决方案可以解决这个问题(包括手动修改授权表),但我个人建议使用工具来简化它。

例如,使用 pgAdmin3,您可以简单地批量更改模式中所有对象的权限。

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

于 2013-02-08T14:26:42.843 回答