文档首页/ 数据仓库服务 GaussDB(DWS)/ 常见问题/ 账户与权限/ 如何创建GaussDB(DWS)数据库只读用户?
更新时间:2024-09-23 GMT+08:00
分享

如何创建GaussDB(DWS)数据库只读用户?

场景介绍

在业务开发场景中,数据库管理员通过SCHEMA来划分不同的业务,例如在金融行业中,负债业务属于SCHEMA s1,资产业务属于SCHEMA s2。

当前需要在数据库中创建一个只读用户user1,允许这个用户访问负债业务SCHEMA s1下所有的表(包括未来创建的新表),供日常读取,但是不允许进行数据插入、修改或删除。

实现原理

DWS有基于角色的用户管理,需要先创建一个的只读角色role1,再将对应的角色授权到实际的用户user1即可。具体参见基于角色的权限管理

操作步骤

  1. 使用系统管理员dbadmin连接DWS数据库。
  2. 执行以下SQL语句创建角色role1。

    1
    CREATE ROLE role1 PASSWORD disable;
    

  3. 执行以下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
    

  4. 执行以下SQL语句,将角色role1授权到实际用户user1。

    1
    GRANT role1 TO user1;
    

  1. 如果访问的SCHEMA s1中包含有外表,还需要对只读用户user1进行使用外表的授权,执行以下命令。

    1
    ALTER USER user1 USEFT;
    

    否则以只读用户查询外表时会报以下错误:“ERROR: permission denied to select from foreign table in security mode”。

  2. 使用只读用户user1进行SCHAMA s1下所有表数据的日常读取。

相关文档