自定义SQL Console的使用规范

DMS提供功能强大的SQL Console,轻松实现对数据库读、写操作。同时,您可以结合安全规则,自定义配置SQL Console查询规范。本文将以POC_dev实例(相关配置参见准备工作结构设计)为操作对象向您介绍SQL Console的部分使用规范。

前提条件

系统角色为管理员DBA安全管理员

进入安全规则详情页

  1. 管理员登录数据管理DMS 5.0

  2. 单击控制台左上角的2023-01-28_15-57-17.png图标,选择全部功能 > 安全与规范(DBS) > 安全规则

    说明

    若您使用的是非极简模式的控制台,在顶部菜单栏中,选择安全与规范(DBS) > 安全规则

  3. 单击POC开发库规则右侧操作列下的编辑

配置单次执行SQL的最大个数

本示例将配置在SQL Console页面单次执行SQL的最大个数为5。

  1. 配置安全规则。

    1. 进入安全规则详情页。

    2. 详情页左侧的导航栏中,单击SQL窗口,并单击SQL执行数量规范

    3. 找到控制单次执行SQL个数规则名,单击右侧的编辑编辑控制单次执行SQL个数

    4. 替换如下规则DSL,并单击提交

      if
          @fac.sql_count > 5
      then
          @act.reject_execute '单次执行SQL个数不能超过5个'
      else
          @act.allow_execute
      end
      说明

      该段安全规则DSL表示:在SQL Console中,单次执行的SQL语句大于5个(系统默认值1000个)则拒绝执行,小于或等于5个则允许执行。更多安全规则语法介绍请参见安全规则DSL语法

  2. 在SQL Console中验证。

    1. 在数据库实例列表中展开POC_dev实例,双击poc_dev数据库,进入SQL Console页。

    2. 在SQL Console窗口中,输入如下语句并单击执行

      SELECT 1;
      SELECT 2;
      SELECT 3;
      SELECT 4;
      SELECT 5;
      SELECT 6;
      说明

      尝试一次执行6条SQL,系统会提示单次执行SQL个数不能超过5个。

配置单次查询的最大返回行数

本示例将配置在SQL Console页面单次查询最大返回行数为3000。

  1. 配置安全规则。

    1. 进入安全规则详情页。

    2. 详情页左侧的导航栏中,单击SQL窗口,并单击基础配置项

    3. 找到单次查询最大返回行数规则名,单击右侧的编辑

    4. 配置内容设置为3000,单击提交

      说明

      系统默认值为200

  2. 在SQL Console中验证。

    1. 在数据库实例列表中展开POC_dev实例,双击poc_dev数据库,进入SQL Console页。

    2. 在SQL Console窗口中,输入如下语句并单击执行

      SELECT * FROM `big_table`;
      说明

      尝试查询一张大表,系统会仅返回3000条结果。您可提交数据导出工单查看更多数据。

配置结果集是否支持编辑

本示例通过设置安全规则,允许您在SQL Console页面编辑SQL结果集。

  1. 配置安全规则。

    1. 进入安全规则详情页。

    2. 详情页左侧的导航栏中,单击SQL窗口,并单击基础配置项

    3. 找到结果集是否支持编辑规则名,单击右侧的编辑

    4. 打开配置内容开关,单击提交

      说明

      系统默认关闭。

  2. 在SQL Console中验证。

    1. 在数据库实例列表中展开POC_dev实例,双击poc_dev数据库,进入SQL Console页。

    2. 在SQL Console窗口中,输入如下语句并单击执行

      SELECT * FROM `big_table` LIMIT 20;
    3. 单击开始编辑,在执行结果区域,修改目标数据,并单击提交修改

    4. 在弹窗中,单击确认,并单击直接执行

配置DML影响行数的阈值

本示例将限制在SQL Console页面DML影响行数为1000。

  1. 配置安全规则。

    1. 进入安全规则详情页。

    2. 详情页左侧的导航栏中,单击SQL窗口,并单击其他SQL规范

    3. 找到禁止全表UPDATE执行规则名,单击右侧的禁用,并单击确认

    4. 单击SQL执行性能规范,找到禁止DML影响行数超过阈值执行规则名,单击右侧的编辑

    5. 替换如下规则DSL,并单击提交

      if
          @fac.sql_type == 'DML' and @fac.sql_affected_rows > 1000
      then
          @act.reject_execute 'DML影响行数超过阈值1000, 拒绝执行'
      else
          @act.allow_execute
      end
      说明

      该段安全规则DSL表示:在SQL Console中,执行语句为DML且影响行数大于1000行(系统默认值2000个)则拒绝执行,小于或等于1000行则允许执行。更多安全规则语法介绍请参见安全规则DSL语法

    6. 单击禁止DML影响行数超过阈值执行规则右侧的启用,并单击确认

  2. 在SQL Console中验证。

    1. 在数据库实例列表中展开POC_dev实例,双击poc_dev数据库,进入SQL Console页。

    2. 在SQL Console窗口中,输入如下语句并单击执行

      UPDATE `big_table` SET `name` = CONCAT(name,`a`);
      说明

      尝试对大表执行DML语句,系统会拦截该语句并提示该DML语句影响行数超过阈值1000,拒绝执行。

配置查询超时时间

本示例将配置在SQL Console页面的查询超时时间为10秒。

  1. 配置查询超时时间

    1. 在DMS对象列表中,右键单击POC_dev实例,从弹出的列表中选择编辑实例

    2. 编辑实例页面中,单击高级信息

    3. 将查询超时时间设置为10秒,并单击提交

      说明

      系统默认值为60秒。

  2. 在SQL Console中验证。

    1. 在数据库实例列表中展开POC_dev实例,双击poc_dev数据库,进入SQL Console页。

    2. 在SQL Console窗口中,输入如下语句并单击执行

      SELECT COUNT( *)  FROM `big_table` ;
      说明

      尝试一次SQL查询,系统将在10秒后终止查询。