使用一个语句对所有序列的GRANT SELECT权限

时间:2011-09-12 10:15:35

标签: sql postgresql

如何使用一个语句将所有序列的SELECT权限授予用户?像这样的东西:

GRANT SELECT ON <ALL SEQUENCES???> TO myUser

5 个答案:

答案 0 :(得分:39)

在PostgreSQL 9.x中,您可以将一个架构中的所有序列的权限授予角色。 syntax

GRANT SELECT
ON ALL SEQUENCES IN SCHEMA schema_name
    TO role_name

角色可以是组角色或登录角色(用户名)。

答案 1 :(得分:18)

这将来会非常有用:

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA schema_name TO your_user;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA schema_name TO your_user;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA schema_name TO your_user;

答案 2 :(得分:6)

接受的答案在9.1上对我不起作用。以下句子确实有效:

GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO user;

答案 3 :(得分:2)

对于低于9.0的Postgres版本

psql -d DBNAME -qAt -c "SELECT 'GRANT SELECT ON ' || relname || ' TO USER;' FROM pg_statio_all_sequences WHERE schemaname = 'public'" | psql -d DBNAME

参考:http://gotochriswest.com/blog/2012/06/11/postgresql-granting-access-to-all-sequences/

答案 4 :(得分:1)

它适用于 Postgres 13

GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO admin;