更新时间:2023-03-08 GMT+08:00

如何创建数据库只读用户?

场景介绍

在业务开发场景中,数据库管理员通过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;    --赋予SHCEMA 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. 使用只读用户user1进行SCHAMA s1下所有表数据的日常读取。