gpt4 book ai didi

database - 授予对 future 在 PostgreSQL 中创建的模式的使用权和特权

转载 作者:太空狗 更新时间:2023-10-30 01:49:49 24 4
gpt4 key购买 nike

我现在正在集成的应用程序将创建新模式。 (每个客户都有自己的架构,例如 schema1、schema2、schema3 ....等)要授予对新创建的模式和模式中特定表的使用权和只读访问权,我执行以下命令:

GRANT USAGE ON SCHEMA schema1 TO read_only_user;
GRANT SELECT ON schema1.talbe1 TO read_only_user;
GRANT SELECT ON schema1.table2 TO read_only_user;

GRANT USAGE ON SCHEMA schema2 TO read_only_user;
GRANT SELECT ON schema2.talbe1 TO read_only_user;
GRANT SELECT ON schema2.table2 TO read_only_user;

(......and so on.....)

我只是想知道我是否可以授予对 future 在 PostgreSQL 中创建的模式的使用权和特权。只能找到改变 future 创建的表而不是 future 创建的模式的默认权限的方法。

最佳答案

模式没有默认权限。但是由于您使用的模型使每个用户都有自己的模式,因此您可以自动化整个过程,包括创建用户和设置密码(如果需要):

CREATE FUNCTION new_user_schema (user text, pwd text) RETURNS void AS $$
DECLARE
usr name;
sch name;
BEGIN
-- Create the user
usr := quote_identifier(user);
EXECUTE format('CREATE ROLE %I LOGIN PASSWORD %L', usr, quote_literal(pwd));

-- Create the schema named after the user and set default privileges
sch := quote_identifier('sch_' || user);
EXECUTE format('CREATE SCHEMA %I', sch);
EXECUTE format('ALTER SCHEMA %I OWNER TO %L', sch, usr);
EXECUTE format('ALTER DEFAULT PRIVILEGES IN SCHEMA %I
GRANT SELECT ON TABLES TO %L', sch, usr);
END; $$ LANGUAGE plpgsql STRICT;

然后您可以使用一个简单的命令创建用户、创建架构并设置默认权限:

SELECT new_user_schema('new_user', 'secret');

关于database - 授予对 future 在 PostgreSQL 中创建的模式的使用权和特权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31635662/

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