Navicat for PostgreSQL中GRANT REFRESH权限报错问题求助
问题原因及解决方案
直接语法错误原因
你的错误信息显示实际执行的是EXPLAIN GRANT ...,而EXPLAIN仅用于分析SELECT、INSERT、UPDATE、DELETE等语句的执行计划,不能和GRANT命令搭配使用。这大概率是你在Navicat中误操作,比如点击了“解释”按钮而非“执行”按钮,导致工具自动在命令前添加了EXPLAIN关键字,从而触发语法错误。
PostgreSQL中授予物化视图刷新权限的正确方式
PostgreSQL不存在GRANT REFRESH ON MATERIALIZED VIEW这种语法,要让用户能刷新物化视图,可根据场景选择以下操作:
- 仅授予刷新权限:授予用户该物化视图的UPDATE权限
GRANT UPDATE ON MATERIALIZED VIEW your_materialized_view TO your_user; - 同时授予刷新+查看数据权限:额外添加SELECT权限
GRANT SELECT, UPDATE ON MATERIALIZED VIEW your_materialized_view TO your_user; - 若物化视图不在默认public schema下,需确保用户拥有对应schema的USAGE权限:
GRANT USAGE ON SCHEMA your_schema TO your_user;
权限说明
执行REFRESH MATERIALIZED VIEW命令,需要用户满足以下条件之一:
- 是该物化视图的所有者
- 拥有该物化视图的UPDATE权限
- 是超级用户
内容的提问来源于stack exchange,提问作者Ralam
相关产品推荐
相关产品推荐

