如何创建GaussDB(DWS)数据库只读用户?
场景介绍
在业务开发场景中,数据库管理员通过SCHEMA来划分不同的业务,例如在金融行业中,负债业务属于SCHEMA s1,资产业务属于SCHEMA s2。
当前需要在数据库中创建一个只读用户user1,允许这个用户访问负债业务SCHEMA s1下所有的表(包括未来创建的新表),供日常读取,但是不允许进行数据插入、修改或删除。
实现原理
DWS有基于角色的用户管理,需要先创建一个的只读角色role1,再将对应的角色授权到实际的用户user1即可。具体参见基于角色的权限管理。
操作步骤
- 使用系统管理员dbadmin连接DWS数据库。
- 执行以下SQL语句创建角色role1。
1
CREATE ROLE role1 PASSWORD disable;
- 执行以下SQL语句,为角色role1进行授权。
1 2 3
GRANT usage ON SCHEMA s1 TO role1; --赋予SCHEMA s1的访问权限; GRANT select ON ALL TABLES IN SCHEMA s1 TO role1; --赋予SCHEMA s1下所有表的查询权限; ALTER DEFAULT PRIVILEGES FOR USER tom IN SCHEMA s1 GRANT select ON TABLES TO role1; --赋予SCHEMA s1未来创建的表的权限,其中tom为SCHEMA s1的owner
- 执行以下SQL语句,将角色role1授权到实际用户user1。
1
GRANT role1 TO user1;
- 如果访问的SCHEMA s1中包含有外表,还需要对只读用户user1进行使用外表的授权,执行以下命令。
1
ALTER USER user1 USEFT;
否则以只读用户查询外表时会报以下错误:“ERROR: permission denied to select from foreign table in security mode”。
- 使用只读用户user1进行SCHAMA s1下所有表数据的日常读取。