我在Amazon Redshift中遇到一种有趣的情况,我有一个用户X,他在公共架构中拥有所有表的选择权,但是一旦创建了一个新表,这个授予似乎不适用于新表。 这是正常行为吗? 如果是,如何处理才能维护模式级别的授权。谢谢。
我在Amazon Redshift中遇到一种有趣的情况,我有一个用户X,他在公共架构中拥有所有表的选择权,但是一旦创建了一个新表,这个授予似乎不适用于新表。 这是正常行为吗? 如果是,如何处理才能维护模式级别的授权。谢谢。
作为超级用户(主节点),执行以下命令:
alter default privileges
for user staging_user
in schema staging
grant select on tables
to reporting_user;
此权限将允许reporting_user从schema staging中由staging_user创建的所有未来表格中选择数据。
alter default privileges in schema sales grant select on tables to group sales_admin;
ALTER DEFAULT PRIVILEGES...
,那么它假定你的意思是ALTER DEFAULT PRIVILEGES FOR USER current_user...
而不是ALTER DEFAULT PRIVILEGES FOR USER user_X...
,因此只有由current_user
创建的新表才会改变其默认特权。 - Steve SFOR USER target_user
和/或IN SCHEMA target_schema
更改ALTER DEFAULT PRIVILEGES
,然后将SELECT
或其他内容授予或撤销给USER
或GROUP
。令人困惑的是,target_user
不是grant
或revoke
的目标,而是表的所有者(通常是创建者)。因此,您确实需要运行类似于alter default privileges for user table_owner in schema sales grant select on tables to group sales_admin;
的命令...就像@SteveS所说的那样。 - Davoshttp://docs.aws.amazon.com/redshift/latest/dg/r_Privileges.html
您可以在创建表的语句中添加grant
命令,为用户授予所需的权限。ALTER DEFAULT PRIVILEGES IN SCHEMA <SCHEMANAME> GRANT SELECT ON TABLES TO GROUP <USER/GROUPNAME>;
对于用户<可能创建报告用户需要访问的表的用户列表>
。 - Merlin