我有一个带有公共模式的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,让两个用户都可以访问新的模式,并重新启动了服务器。我试过阅读文档和很多东西,但都没有成功。也许是我连接数据库的方式?
谢谢您。
1条答案
按热度按时间uklbhaso1#
谢谢@jgh,就是这样user2必须给自己访问user1的权限,以创建一些schema。我所做的:
然后:
=>显示结果100:)