如何根据数据库名称(PSQL)向用户授予权限

问题描述 投票:0回答:1

我想知道是否有一种方法可以根据用户名和编程方式向用户授予特定数据库的权限。

例如,假设我们有数据库 db1、db2、x_db1、x_db2,我想将所有权限授予仅 x_db1 和 x_db2 上的用户。我不想执行

将数据库 x_db1 上的所有权限授予 user_x;

将数据库 x_db2 上的所有权限授予 user_x;

我想知道是否有类似 GRANT ALL PRIVILEGES ON DATABASE x_* TO user_x;所以我不必在每次添加新数据库时都向用户授予权限。

sql database psql privileges
1个回答
1
投票

我相信GRANT不接受通配符,但是,如similar-topic,你可以使用程序来实现它: 做

$$
BEGIN
EXECUTE (
   SELECT 'GRANT ALL ON TABLE '
       || string_agg (format('%I.%I', table_schema, table_name), ',')
       || ' TO test'
   FROM   information_schema.tables
   WHERE  table_schema = 'public'
   AND    table_name LIKE 'test\_%'
   );
END
$$;
© www.soinside.com 2019 - 2024. All rights reserved.