问题描述
有人可以帮助解决以下疑问吗?
我在Postgresql中有一个数据库,其中一些表是由管理员用户创建的。然后,我创建了一个视图以连接一些信息。我更喜欢使用PgAdmin与Postgresql一起使用,因为我不熟悉用于管理服务器的sql语法...现在:
非常感谢您!
解决方法
首先,您需要在所有人的REVOKE USAGE
模式上public
并将其授予其他用户:
REVOKE USAGE,CREATE ON SCHEMA public FROM PUBLIC;
GRANT USAGE,CREATE ON SCHEMA public TO ddl_user;
GRANT USAGE ON SCHEMA public TO write_user;
现在在新的架构中创建视图,并允许新用户仅访问该架构和视图:
CREATE SCHEMA viewschema;
CREATE ROLE only_view LOGIN;
GRANT USAGE ON SCHEMA viewschema TO only_view;
ALTER ROLE only_view SET search_path = viewschema;
CREATE VIEW viewschema.myview AS SELECT ...;
GRANT SELECT ON viewschema.myview TO only_view;