我有一个带有公共模式的postgresql11数据库。我有一个角色user1,它拥有schema public的所有权限。
我想做以下事情:
- 创建一个模式"some_ schema">
- 向用户1授予只读特权;some_ schema">
- 创建对模式具有所有特权的角色user2";some_schema">
我尝试了以下操作:
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;
这不起作用,因为当我像这样登录时;测试";表并选择;关系"some_schema.test"不存在":
创建表some_shema.test(id int(;\q
psql-U user1;从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:(