云数据库 TAURUSDB-多租户管理与资源隔离:数据库管理

时间:2024-12-03 09:29:33

数据库管理

数据库分为系统租户下的数据库和普通租户下的数据库。系统租户可以访问所有数据库,普通租户只能访问属于自己的数据库。

  • 在系统租户下管理数据库

    创建数据库

    创建系统租户的数据库:

    CREATE DATABASE [IF NOT EXISTS] `db_name`;

    创建普通租户的数据库:

    CREATE DATABASE [IF NOT EXISTS] `db_name@tanant_name`; 

    删除数据库

    删除系统租户的数据库:

    DROP DATABASE [IF EXISTS] `db_name`;

    删除普通租户的数据库:

    DROP DATABASE [IF EXISTS] `db_name@tanant_name`;
  • 在普通租户下管理数据库

    创建当前租户的数据库:

    CREATE DATABASE [IF NOT EXISTS] 'db_name'; 

    删除当前租户的数据库:

    DROP DATABASE [IF EXISTS] 'db_name';
  • 在系统租户下需要以db_name@tenant_name的方式对普通租户下的数据库进行操作。
  • 系统库SYS、MYSQL暂不允许普通租户访问。
  • 租户内不可以创建部分特殊DB:INFORMATION_SCHEMA, PERFORMANCE_SCHEMA, MYSQL, SYS, __recyclebin__。
  • 存量数据库分配租户

    为保证兼容性,升级或者迁移到多租实例后,存量的数据库默认属于系统租户,可以通过如下语法将存量的数据库分配给租户。此外,对于已经开启多租特性后,系统租户创建的且未分配给普通租户的数据库,也可通过如下语法分配数据库给对应租户。

    数据库分配

    将数据库分配给租户名为tenant_name的普通租户

    ALTER DATABASE db_name TENANT = `tenant_name`;

    将数据库回收到系统租户下

    ALTER DATABASE db_name TENANT = ``;

    查看映射关系

    SELECT * FROM information_schema.DBA_RSRC_TENANT_DB;
    • 仅在高权限root用户下可使用。
    • 如果数据库是开启多租后创建的,以db_name@tenant_name格式命名的数据库不允许分配调用此接口,接口会返错。
    • 如果tenant不存在,且不为空,接口返错。
  • 通过租户下的用户连接数据库

    在系统租户下,原有连接方式不变。

    在普通租户下,指定用户时,需要以user_name@tenant_name的形式;指定数据库时,支持db_name和db_name@tenant_name两种形式。

    mysql --host=**** -u user1@tenant_1 -D db1 -p pwssword;
    mysql --host=**** -u user1@tenant_1 -D db1@tenant_1 -p pwssword;

    连接成功后,该用户将受到对应租户下的资源限制。

support.huaweicloud.com/kerneldesc-gaussdbformysql/gaussdbformysql_20_0053.html