Redshift用户仅更新存储过程权限配置遇权限拒绝报错求助
解决Amazon Redshift用户更新存储过程的权限问题
要执行CREATE OR REPLACE PROCEDURE更新指定schema下的存储过程,光给全局的CREATE OR REPLACE PROCEDURE权限不够,还得补上几个关键权限:
- 对目标schema的
USAGE权限:没有这个权限,用户连访问该schema的资格都没有 - 针对目标schema的
CREATE OR REPLACE PROCEDURE权限(比全局权限更安全,避免用户乱改其他schema的对象) - 如果是替换已存在的存储过程,还得有该存储过程的
ALTER权限
具体授权步骤
用管理员账号执行以下SQL:
- 先给用户访问目标schema的权限:
GRANT USAGE ON SCHEMA schema_name TO ci;
- 再给用户在该schema下创建/替换存储过程的权限:
GRANT CREATE OR REPLACE PROCEDURE ON SCHEMA schema_name TO ci;
- (可选)如果要替换已有的存储过程,得补上ALTER权限:
单个存储过程授权:
GRANT ALTER ON PROCEDURE schema_name.procedure_name TO ci;
批量授权该schema下所有存储过程:
GRANT ALTER ON ALL PROCEDURES IN SCHEMA schema_name TO ci;
验证操作
授权完成后,用ci用户重新执行更新命令:
psql -h $host -U ci -d $database -p $port -f file.sql
最小权限建议
尽量不要给用户全局的CREATE OR REPLACE PROCEDURE权限,只针对需要操作的schema授权,严格遵循最小权限原则,降低风险。
内容的提问来源于stack exchange,提问作者moe
相关产品推荐
相关产品推荐

