如何在PostgreSQL 9.4.5中使用FUNCTION授予权限

时间:2016-02-26 17:51:43

标签: postgresql

我需要向数据库用户授予权限。我需要使用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。

非常感谢,

1 个答案:

答案 0 :(得分:0)

可能是这样的:

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;