postgresql - PostgreSQL、只读用户和 PgAdmin
问题描述
有人可以帮助解决下面的疑问吗?
我在 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;
推荐阅读
- go - 从文件中读取并检查文件结尾
- r - 将向量的所有元素(包含 9 个元素)除以来自另一个向量(包含 100 个元素)的第一个、第二个、...第 100 个元素
- javascript - How to Convert nested(Complex) JSON to excel IN Jquery?
- java - Spring Boot 2.1.0 and Flyway 4.2.0 - Tests
- python - How to write unescaped string to a XML element with ElementTree?
- java - javafx child Stage is closing parent stage
- html - How to get an image to appear in a header, fully sized when the screen is wide enough but centered when the screen is too thin?
- java - Spring Boot - Deploy application to Google Cloud App engine but missing app.yaml
- android - (AccountManager) context.getSystemService(Context.ACCOUNT_SERVICE) vs Accountmanager.get(context)
- gis - 如何在 QGIS 中绘制地图