在DMS中执行SQL语句后出现“禁止未知SQL执行”报错

问题描述

在使用DMS控制台时,执行SQL语句后,执行结果出现以下报错。

自定义安全规则:禁止未知SQL执行

问题原因

DMS控制台的安全规则中,默认未配置相关SQL语句允许执行,因此执行相关SQL语句时,会被拒绝执行。

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
  1. 登录DMS控制台
  2. 依次单击屏幕上侧工具栏的系统管理>安全管理>安全规则,进入安全规则页面。
  3. 单击mysql default规则右侧的编辑,设置数据库的安全规则。
    注意:此处演示实例安全规则为mysql default,具体操作以您实例当前关联的安全规则为准。关于如何查看实例当前关联的安全规则,请参见更多信息
  4. 单击页面左侧的SQL变更
  5. 若已有相关规则,则可直接单击规则右侧的编辑,对安全规则进行编辑。若需新增相关规则,则单击新增规则,对规则进行编辑。以下是基于mysql default安全规则,描述解除禁止未知SQL执行规则的DSL语法。
    if
    @fac.sql_type in
    [ 'INSERT','INSERT_SELECT','REPLACE','REPLACE_INTO','UPDATE','DELETE','MERGE','REMOVE', 'EXEC']
    then
    @act.allow_execute_direct
    end
    说明:DMS定义了一套领域专用语言DSL(Domain Specific Language)用来描述安全规则,关于如何使用DSL语法,请参见安全规则DSL语法
  6. 在DMS控制台中,进入SQL Console页面,输入需要执行的SQL语句,然后单击执行
  7. 查看执行结果中的信息,确认可以正常执行相关SQL语句。

更多信息

  1. 登录DMS控制台
  2. 在页面左侧的实例列表中,右键单击目标实例名称。
  3. 在弹出的右键菜单中,将鼠标依次移动到管控模式>安全协同,子菜单会展示实例当前关联的安全规则。

适用于

  • 数据管理DMS

如果您的问题仍未解决,您可以在阿里云社区免费咨询提交工单联系阿里云技术支持。