我正在尝试为我的数据库创建一个read-all用户,但是最简单的查询似乎不能正常工作。
当我尝试运行查询时 select * from public.reports limit 5;
当使用 postgres
用户(db owner),返回5行结果。但是,使用此新用户时,它不会返回任何结果。它不会出错,也不会说什么。它只是不返回任何结果,就好像表是空的一样。
我使用以下查询创建了新用户:
CREATE USER "new_user" WITH PASSWORD 'strong_password';
GRANT CONNECT ON DATABASE my_database TO "new_user";
GRANT USAGE ON SCHEMA public TO "new_user";
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO "new_user";
GRANT SELECT ON ALL TABLES IN SCHEMA public to "new_user";
ALTER USER "new_user" WITH LOGIN;
我错过了什么?
1条答案
按热度按时间wpx232ag1#
所以您启用了行级安全性?手册:
如果为表启用了行级安全性,但不存在适用的策略,则假定使用“default deny”策略,这样就不会有任何行可见或可更新。
这说明用户看不到任何行。
对于新用户来说,绕过rls的最简单方法是
BYPASSRLS
.否则,你需要
CREATE POLICY
允许事情发生。允许对表执行所有读写操作reports
对于我们的新角色: