【问题标题】:Reshift grants verification HAS_TABLE_PRIVILEGE failsReshift 授权验证 HAS_TABLE_PRIVILEGE 失败
【发布时间】:2016-11-08 08:24:37
【问题描述】:

我正在与带有组、模式、默认权限的 Redshit 授权作斗争。 当我尝试使用 HAS_TABLE_PRIVILEGE 检查一切是否正确时

select tablename, 
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'select') as select,
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'insert') as insert,
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'update') as update,
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'delete') as delete, 
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'references') as references 
from pg_tables
where schemaname='datalab'
order by tablename

我明白了:

An error occurred when executing the SQL command:
select tablename, 
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'select') as select,
   HAS_TABLE_PRIVILEGE('analyst', tablena...

[Amazon](500310) Invalid operation: relation "dss__transaction" does not exist;

Execution time: 0.2s
1 statement failed.

这里到底发生了什么?

【问题讨论】:

    标签: permissions amazon-redshift sql-grant


    【解决方案1】:

    我试过这个,但查询来自pg_tables 的第一个结果失败。就我而言,这是因为我需要明确说明每个表所在的架构。这对我有用:

    WITH cte AS 
    (
    SELECT schemaname+'.'+tablename AS table_name
    FROM pg_tables
    WHERE schemaname = 'datalab'
    )
    SELECT table_name, 
       HAS_TABLE_PRIVILEGE('analyst', table_name, 'select') AS select,
       HAS_TABLE_PRIVILEGE('analyst', table_name, 'insert') AS insert,
       HAS_TABLE_PRIVILEGE('analyst', table_name, 'update') AS update,
       HAS_TABLE_PRIVILEGE('analyst', table_name, 'delete') AS delete, 
       HAS_TABLE_PRIVILEGE('analyst', table_name, 'references') AS references 
    FROM cte
    ORDER BY table_name ASC;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      • 2014-12-28
      • 2016-05-29
      • 1970-01-01
      • 2021-12-08
      • 2019-09-24
      • 2018-11-29
      相关资源
      最近更新 更多