数据仓库服务 GAUSSDB(DWS)-教程:新物理集群划分为逻辑集群:创建逻辑集群关联用户并跨逻辑集群查询数据

时间:2024-01-26 09:00:10

创建逻辑集群关联用户并跨逻辑集群查询数据

  1. 以系统管理员dbadmin连接数据库,执行以下SQL语句查看逻辑集群创建成功。

    1
    SELECT group_name FROM PGXC_GROUP;
    

  2. 创建两个用户u1和u2,分别关联逻辑集群lc1和逻辑集群lc2。

    1
    2
    CREATE USER u1  NODE GROUP "lc1" password '{password}';
    CREATE USER u2  NODE GROUP "lc2" password '{password}';
    

  3. 切换到用户u1,创建表t1,并插入数据。

    1
    2
    3
    SET ROLE u1 PASSWORD '{password}';
    CREATE TABLE u1.t1 (id int);
    INSERT INTO u1.t1 VALUES (1),(2);
    

  4. 切换到用户u2,创建表t2,并插入数据。

    1
    2
    3
    SET ROLE u2 PASSWORD '{password}';
    CREATE TABLE u2.t2 (id int);
    INSERT INTO u2.t2 VALUES (1),(2);
    

  5. 同时使用u2查询u1.t1表。返回结果提示没有权限。

    1
    SELECT * FROM u1.t1;
    

  6. 切换回系统管理员dbadmin,查询表u1.t1和u2.t2分别创建到了集群lc1和lc2中,分别对应企业的两块业务,实现了基于逻辑集群的数据隔离。

    1
    2
    3
    SET ROLE dbadmin PASSWORD '{password}';
    SELECT p.oid,relname,pgroup,nodeoids FROM pg_class p LEFT JOIN pgxc_class pg ON p.oid = pg.pcrelid WHERE p.relname = 't1';
    SELECT p.oid,relname,pgroup,nodeoids FROM pg_class p LEFT JOIN pgxc_class pg ON p.oid = pg.pcrelid WHERE p.relname = 't2';
    

  7. 将逻辑集群lc1的访问权限授予用户u2,同时将SCHEMA u1访问权限、表u1.t1访问权限授予用户u2。

    1
    2
    3
    GRANT usage ON NODE GROUP lc1 TO u2;
    GRANT usage ON SCHEMA u1 TO u2;
    GRANT select ON TABLE u1.t1 TO u2;
    

    划分逻辑集群后,相当于在原来物理集群的基础上,再增加一层逻辑集群(NODE GROUP)的权限隔离。所以跨逻辑集群访问数据,首先要授权用户有逻辑集群(NODE GROUP层)权限,其次是SCHEMA权限,最后是单张表TABLE权限。如果没有授予逻辑集群的权限,会提示类似permission denied for node group xx的错误信息。

  8. 再次切换到u2用户,查询u1.t1表,查询成功,逻辑集群既实现了数据隔离,又可以在用户授权后进行跨逻辑集群访问。

    1
    2
    SET ROLE u2 PASSWORD '{password}';
    SELECT * FROM u1.t1;
    

support.huaweicloud.com/mgtg-dws/dws_01_7252.html