作者小头像 Lv.2
70 成长值

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据
个人勋章
TA还没获得勋章~
成长雷达
70
0
0
0
0

个人资料

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据

达成规则

发布时间 2021/08/26 14:56:58 最后回复 那大龙fee 2021/08/26 17:32:02 版块 数仓GaussDB(DWS)
4965 5 0
发布时间 2020/08/19 11:21:08 最后回复 古月磊 2020/08/20 09:53:42 版块 数仓GaussDB(DWS)
3037 5 0
他的回复:
首先,如果整库只读,那么无法新增表和新增schema。所以我理解你的意思是对管理员用户或者高权限用户可读可写,对于其他用户只读。我按照我的理解做了一个例子,仅供参考。 ---- 管理员登录,给特定用户赋予特定schema下的只读权限。 ```sql --所有用户都是public用户组的子用户,将所有用户在库中新建schema和在public schema中新建表的权限回收。 postgres=# revoke create on database postgres from public; REVOKE postgres=# revoke create on schema public from public; REVOKE --创建只读用户 postgres=# create role read_only_role with login password 'Gauss_234'; CREATE ROLE --创建只读schema postgres=# create schema schema_4_read_only; CREATE SCHEMA --将schema使用权限赋予只读用户 postgres=# grant usage on schema schema_4_read_only to read_only_role; GRANT --将schema中的表的只读权限赋予只读用户 postgres=# ALTER DEFAULT PRIVILEGES in schema schema_4_read_only grant select on tables to read_only_role; ALTER DEFAULT PRIVILEGES --创建示例表 postgres=# create table schema_4_read_only.t2 (c1 int); CREATE TABLE ``` ---- 普通用户登录,在特定schema下拥有只读权限。 ```sql --只读用户在库中新建schema和在public schema中新建表报权限不足。 postgres=> create schema test; ERROR: permission denied for database postgres postgres=> create table t1 (c1 int); ERROR: permission denied for schema public --只读用户在库中只读schema中查询表成功。 postgres=> select * from schema_4_read_only.t2; c1 ---- (0 rows) --只读用户在库中只读schema中表插入记录报权限不足。 postgres=> insert into schema_4_read_only.t2 values (1); ERROR: permission denied for relation t3 ```