pg_cron问题:非rds_superuser用户无法查询cron.job相关表数据
问题原因
出现这种情况是因为pg_cron扩展(你调用的cron.schedule_in_database属于该扩展)的权限机制限制:
cron.job和cron.job_run_details这两张存储任务元数据的表,默认只有超级用户(包括rds_superuser角色成员)拥有查看权限。- 你是在
postgres数据库中创建的任务,任务的元数据就存在这个库的cronschema下的表里,非超级用户角色的my_user默认没有读取这些表数据的权限。 pg_cron的这种设计是为了防止普通用户随意查看、修改他人创建的定时任务,避免安全风险。
如果需要让my_user能查看任务信息,可通过超级用户执行以下语句授予权限(注意:授予全表SELECT权限会让该用户看到所有任务):
GRANT SELECT ON cron.job TO my_user; GRANT SELECT ON cron.job_run_details TO my_user;
若只想让my_user查看自己创建的任务,还可以配置行级安全策略(RLS)来做更精细的权限控制。
内容的提问来源于stack exchange,提问作者xi20
相关产品推荐
相关产品推荐

