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

使用相同凭证,DataGrip查询Redshift表提示权限拒绝的原因

问题

我在VSCode中可通过以下Python脚本创建或删除Redshift表:

def write_to_RS(query):
    try:
        secret_arn = session.client('secretsmanager').get_secret_value(SecretId=rs_secret_id)['ARN']

        # Initializing Redshift client
        logger.info("Initializing Redshift's client ...")
        config = Config(connect_timeout=180, read_timeout=180)
        client_redshift = session.client("redshift-data", config=config)

        client_redshift.execute_statement(Database=db,
                                          SecretArn=secret_arn,
                                          Sql=query,
                                          ClusterIdentifier=cluster_id)
        
        permissions_update = "GRANT ALL ON ALL TABLES IN SCHEMA my_schema TO GROUP admin"
        
        client_redshift.execute_statement(Database=db,
                                    SecretArn=secret_arn,
                                    Sql=permissions_update,
                                    ClusterIdentifier=cluster_id)
    except Exception as e:
        raise Exception(e)

q = """
CREATE TABLE IF NOT EXISTS address (
    account_id INT,
    street VARCHAR,
    city VARCHAR,
    country VARCHAR
)
"""

write_to_RS(q)

# write_to_RS('DROP TABLE address')

但使用相同凭证在DataGrip中直接打开或查询该表(如select count(*) from address)时,抛出错误:[42501] ERROR: permission denied for relation address。请问这是什么原因?是否public schema存在不可修改的默认权限?

分析与解决
  • 权限授权范围不包含新创建的表:脚本中执行的GRANT ALL ON ALL TABLES IN SCHEMA my_schema TO GROUP admin仅对执行该语句前已存在的表生效,刚创建的address表不在这个范围内,所以没有被授予权限。
  • 用户组归属验证:确认DataGrip使用的凭证对应的用户是否属于admin组,若不在该组,组权限无法作用于该用户。
  • schema默认权限配置:如果表默认创建在public schema下(脚本未指定schema时的默认行为),检查public的默认权限:
    -- 查看public schema默认权限
    SELECT nspname, defaclacl FROM pg_namespace WHERE nspname = 'public';
    -- 配置默认权限,让admin组自动拥有新表权限
    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO GROUP admin;
    
  • 单独为已创建表授权:针对已存在的address表,执行单独授权:
    GRANT ALL ON TABLE address TO GROUP admin;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:25:25