对特定模式具有不同权限的 Postgresql 2 用户

Postgresql 2 users with different permissions on a specific schema

我有一个带有 public 模式的 postgresql 11 数据库。我有一个角色 user1,它拥有架构 public.

的所有权限

我想做以下事情:

我尝试了以下方法:

CREATE USER user2 WITH PASSWORD '***';
CREATE schema "some_schema";
GRANT CONNECT ON DATABASE user1 TO some_schema;
GRANT USAGE ON SCHEMA some_schema TO user1;
GRANT ALL ON SCHEMA some_schema to user2;

ALTER DEFAULT PRIVILEGES IN SCHEMA some_schema GRANT SELECT ON TABLES TO user1;

这不起作用,因为当我这样登录然后我创建了一个“测试”table 和 select,它使用户 1 认为“关系 'some_schema.test' 没有存在”:

创建tablesome_shema.test(id int); \q

psql -U user1; select * 来自 some_schema.test;

结果 => 关系 some_schema.test 不存在。

我还更改了 pg_hba.conf 以允许两个用户访问新架构并重新启动服务器。 我试图阅读文档和许多东西但没有成功。也许这是我连接到数据库的方式?

谢谢。

谢谢@JGH,就是这样。 : 用户 2 必须让自己访问用户 1 到架构 some_shema。 我做了什么:

psql
CREATE USER user2 WITH PASSWORD '***';
\c my_database
CREATE SCHEMA some_schema AUTHORIZATION user2;
\c my_database user2
create table some_schema.test(id int);
insert into some_schema.t(100);
GRANT USAGE ON SCHEMA some_schema TO user1;
GRANT SELECT ON ALL TABLES IN SCHEMA some_schema TO user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA some_schema GRANT SELECT ON TABLES TO user1;

然后 :

\c my_database user1
select * from some_schema.t;

=> 显示结果 100 :)