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

ux6nzvsh  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(334)

我有一个带有公共模式的postgresql11数据库。我有一个角色user1,它对schema public具有所有权限。
我想做以下工作:
创建一个模式“some\ u schema”;
将user1的只读权限授予“some\u schema”;
创建对模式“some\u schema”具有所有权限的角色user2。
我尝试了以下方法:

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;

这不起作用,因为当我像这样登录,然后创建一个“test”表并选择时,它会将user1放入“relation”some\u schema.test“不存在”的位置:
创建表some\u shema.test(id int)\q
psql-u用户1;从某个schema.test中选择*;
result=>relation some\ u schema.test不存在。
我还更改了pg_hba.conf,让两个用户都可以访问新的模式,并重新启动了服务器。我试过阅读文档和很多东西,但都没有成功。也许是我连接数据库的方式?
谢谢您。

uklbhaso

uklbhaso1#

谢谢@jgh,就是这样user2必须给自己访问user1的权限,以创建一些schema。我所做的:

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:)

相关问题