一直在寻找这个答案,但猜测我问题上的关键字很常见,搜索引擎返回不同的答案。
我创建了一个包含几个表的架构。为什么我的表在公共架构上可见?尽管这些表不可访问,但可见。我可以防止吗?或者这是否意味着所有表都会自动进入公共模式?
CREATE SCHEMA IF NOT EXISTS my_schema;
alter database zsdev02x set search_path = "$user", public, my_schema;
GRANT USAGE ON SCHEMA my_schema TO user_boss,user_standard;
GRANT CONNECT ON DATABASE zsdev02x TO user_boss,user_standard;
create table my_schema.lookup(test text);
insert into my_schema.lookup values('hello 1');
insert into my_schema.lookup values('hello 2');
create table my_schema.project(test text);
insert into my_schema.project values('hello 1');
insert into my_schema.project values('hello 2');
REVOKE ALL ON SCHEMA my_schema FROM PUBLIC;
GRANT SELECT ON ALL TABLES IN SCHEMA my_schema TO user_boss,user_standard;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA my_schema TO user_boss,user_standard;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA my_schema TO user_boss,user_standard;
GRANT SELECT, INSERT, UPDATE, DELETE ON my_schema.lookup TO user_boss;
GRANT SELECT, INSERT, UPDATE, DELETE ON my_schema.project TO user_standard;