You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Redshift查询视图报权限拒绝,但原查询正常问题排查

排查Redshift视图查询权限拒绝问题

针对查询视图stg_kfdb_answers_flattened时提示permission denied for relation answers的问题,按以下步骤排查:

  • 检查视图本身的权限是否授予
    你之前执行的GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public to jerry;仅对表生效,Redshift中视图和表是分开的权限对象。需要单独给视图授权:

    GRANT SELECT ON "dev"."public"."stg_kfdb_answers_flattened" TO jerry;
    

    或者批量授权schema下所有视图:

    GRANT SELECT ON ALL VIEWS IN SCHEMA public TO jerry;
    
  • 验证源表answers的直接权限
    确认用户jerry是否拥有answers表的SELECT权限:

    SELECT HAS_TABLE_PRIVILEGE('jerry', 'dev.public.answers', 'SELECT');
    

    如果返回f,需要给该表授权:

    GRANT SELECT ON "dev"."public"."answers" TO jerry;
    

    若answers表不在public schema,需替换为对应schema名称,同时确保jerry拥有该schema的USAGE权限:

    GRANT USAGE ON SCHEMA target_schema TO jerry;
    
  • 检查视图的安全属性
    查看视图是否使用了SECURITY DEFINER属性:

    SELECT relname, relsecuritytype FROM pg_class WHERE relname = 'stg_kfdb_answers_flattened';
    

    若relsecuritytype为d(即SECURITY DEFINER),视图执行权限依赖于创建视图的用户对answers表的权限。这种情况可修改视图属性为默认的SECURITY INVOKER:

    ALTER VIEW "dev"."public"."stg_kfdb_answers_flattened" SET SECURITY INVOKER;
    
  • 确认视图定义的依赖对象
    查看视图完整定义,排查是否引用了其他未授权对象:

    SELECT definition FROM pg_views WHERE schemaname = 'public' AND viewname = 'stg_kfdb_answers_flattened';
    

    若定义包含跨schema表、函数等,需给jerry授予对应对象的权限。

内容的提问来源于stack exchange,提问作者Baudrillardist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 22:05:22