gpt4 book ai didi

postgresql - 在不知道架构名称的情况下向组角色添加权限

转载 作者:行者123 更新时间:2023-11-29 13:33:15 25 4
gpt4 key购买 nike

如何在不指定特定模式的情况下向角色(充当组)添加权限。基本上我有一个带有模式的数据库 (my_first_schema)。我通过克隆 my_first_schema 创建了多个新模式。然后创建一个新的数据库用户并将我的组权限授予该用户。

如何在不知道架构名称(因为我动态创建架构)的情况下向组角色添加权限?

更新 我试图撤销数据库中所有模式的所有权限,并将选择权限授予动态创建的模式,以便用户只能访问特定模式。但是它撤销了对所有数据库中所有表的所有权限,并且在为用户授予对特定模式的 SELECT 权限后,我收到了权限被拒绝的错误消息。

ALTER DEFAULT PRIVILEGES REVOKE ALL ON TABLES FROM PUBLIC;

ALTER DEFAULT PRIVILEGES IN SCHEMA john_smith_gmail_com GRANT SELECT ON TABLES TO john_smith_gmail_com;

最佳答案

ALTER DEFAULT PRIVILEGES ,但它仅适用于表、序列、函数和类型。 用于模式。此相关答案中的更多信息:
Grant all on a specific schema in the db to a group role in PostgreSQL

但是,如果您动态创建一个模式,您也可以动态地为角色添加权限。例如,如果您在 plpgsql 函数中执行所有这些操作,请将其合并(没有 DO 包装器):

DO
$$
BEGIN
EXECUTE format('GRANT ALL ON SCHEMA %I TO mygroup', new_schema);
END
$$

format()需要 Postgres 9.1 或更高版本。
务必properly escape identifiers for dynamic SQL .

关于postgresql - 在不知道架构名称的情况下向组角色添加权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19027247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com