Postgres只读用户访问新建视图时提示Permission Denied问题求助
PostgreSQL只读用户无法访问新建视图的解决方案
检查并授予模式USAGE权限
只读用户可能缺少视图所在模式的访问权限,执行以下语句:GRANT USAGE ON SCHEMA public TO "readonlyuser@test_XXXXXX";确认视图依赖对象的权限
如果视图引用了其他表、视图或函数,需确保只读用户对这些依赖对象拥有SELECT权限。若无法逐一授权,可将视图设置为SECURITY DEFINER(注意安全风险,仅在必要时使用):CREATE OR REPLACE VIEW public."View_Name" WITH (SECURITY DEFINER) AS -- 替换为你的视图查询逻辑 SELECT column1, column2 FROM public.target_table; -- 限制安全定义者的搜索路径,避免权限泄露 ALTER VIEW public."View_Name" SET search_path = public;验证权限配置
使用管理员账号查询视图的权限明细,确认授权是否生效:SELECT grantee, privilege_type FROM information_schema.table_privileges WHERE table_name = 'View_Name' AND table_schema = 'public';结果中需包含readonly用户的SELECT权限记录。
确认用户身份与搜索路径
让只读用户执行以下语句,排查身份或路径问题:SELECT current_user; SHOW search_path;确保当前用户为
readonlyuser@test_XXXXXX,且search_path包含public。
内容的提问来源于stack exchange,提问作者SOUser
相关产品推荐
相关产品推荐

