我曾经与Oracle合作,在那里对我来说很明显如何做这件事,但我不知道如何在PostgreSQL中实现同样的功能。
1)假设USER1是在模式USER1中创建的TEST_TABLE的所有者。我希望USER2能够ALTER user1.test_table(仅此权限,仅此而已)。
CREATE user1;
CREATE TABLE test_table(a INT);
CREATE user2;
字符串
在Oracle中足以作为USER1执行:
GRANT ALTER ON test_table TO user2;
型
那么PostgreSQL呢?
这里的解决方案不起作用,因为common role能够做的不仅仅是ALTER:ALTER postgres table owned by user from the same group
2)如何授予USER1仅创建其schema中特定对象的权限?例如:
如Oracle中的数据库:
GRANT CREATE TABLE TO USER1;
型
现在在Oracle中,用户1只能在他的模式中创建表,而不能创建SEQUENCES、VIEWS等。
Postgres怎么样?
GRANT CREATE ON SCHEMA USER1 TO USER1;
型
更强大,我不需要它
1条答案
按热度按时间8e2ybdfx1#
下面是如何在PostgreSQL中实现你提到的功能:
1.授予备用权限:要使给予USER2仅修改USER1拥有的单个表的权限,必须执行两个步骤。首先,通过授予USER2
USAGE
权限,使给予USER2访问该表的架构的权限,从而使其能够查看该架构中的对象。其次,给予USER2对该特定表的ALTER
权限。字符串
通过这种配置,可以保证USER2能够修改
test_table
,但不能在模式中获得更多特权。1.仅允许USER1创建表:为USER1创建一个不同的方案,并将其设为默认方案,以便仅允许他们创建表,而不允许创建其他对象类型,如序列或视图。接下来,为USER1提供对该方案的
CREATE
权限。型
USER1能够使用此配置在其模式中构造表,但无法构建其他对象类型,如视图或序列。