PostgreSQL授予应用用户权限后访问表仍提示权限拒绝,如何解决?
PostgreSQL权限问题:permission denied for table my_table 解决办法
你遇到的问题是因为提前执行的表权限授权仅对当时已存在的表生效,后续新创建的表不会自动继承这些权限。下面是具体的解决步骤:
1. 给已创建的新表补充权限
针对已经建好的my_table,直接执行授权语句:
GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE my_schema.my_table TO my_user;
如果my_schema里有多个新表,也可以批量授权:
GRANT SELECT, UPDATE, INSERT, DELETE ON ALL TABLES IN SCHEMA my_schema TO my_user;
2. 设置默认权限,让新表自动获得权限
为了避免之后创建表还要重复授权,给my_schema设置默认权限,确保后续新建的表自动赋予my_user操作权限:
ALTER DEFAULT PRIVILEGES IN SCHEMA my_schema GRANT SELECT, UPDATE, INSERT, DELETE ON TABLES TO my_user;
注意:这个默认权限仅对执行该语句之后创建的表生效,且需要由后续创建表的用户(比如你的管理员账号)来执行这条命令,因为PostgreSQL的默认权限是基于表的创建者设置的。
3. 检查并补充Schema的访问权限
如果上述操作后还是报错,可能是my_user没有访问my_schema的权限,执行以下命令补全:
GRANT USAGE ON SCHEMA my_schema TO my_user;
内容的提问来源于stack exchange,提问作者happymatei
相关产品推荐
相关产品推荐

