【问题标题】:How to grant permission using FUNCTION in PostgreSQL 9.4.5如何在 PostgreSQL 9.4.5 中使用 FUNCTION 授予权限
【发布时间】:2016-02-26 17:51:43
【问题描述】:

我需要向数据库用户授予权限。我需要使用 FUNCTION 来执行此操作。

grant all on schema schema1 to user1;
grant all on schema schema1 to user2;
grant all on schema schema1 to user3;

模式名和用户名应该从这些 sql 查询输出中获取:

select nspname from pg_namespace;

schema1
schema2
schema3

select usename from pg_user;

user1
user2
user3

有人可以帮我写一个函数来实现这个吗?我正在使用 Postgresql 9.4.5。

非常感谢,

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    可能是这样的:

    CREATE OR REPLACE FUNCTION grant_all()
    RETURNS VOID AS
    $$
    DECLARE
        user TEXT;
        schema TEXT;
    BEGIN
        FOR user IN (SELECT usename FROM pg_user)
        LOOP
            FOR schema IN (SELECT nspname FROM pg_namespace)
            LOOP
                EXECUTE format('GRANT ALL ON SCHEMA %s to %s', schema, user);
                RAISE NOTICE 'Granted all on % to %', schema, user;
            END LOOP;
        END LOOP;
    END
    $$
    LANGUAGE plpgsql;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-31
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多