前提条件
- 用户需要具有进入SQL规范界面的菜单权限。菜单权限请参考权限说明。
- SQL规范为企业版功能,当前仅支持MySQL数据库。
注意事项
SQL规范与实例关联,DMS系统默认提供MySQL数据库类型的SQL规范,默认规范不可删除。
操作步骤
- 用户登录DMS系统。
- 在左侧菜单栏依次选择安全中心 > SQL规范。
规范审核结果
DMS定义了两种规范审核结果:
- 强制改进:SQL审核存在强制改进项会阻断用户在查询窗口、SQL变更、实例元数据进行的执行动作。用户将强制改进项修改之后才能正常执行SQL。
- 建议改进:SQL审核存在建议改进项不会阻断用户的执行动作,但是会把改进项提示给用户。
功能介绍
DMS提供了搜索规范、创建SQL规范、删除SQL规范、编辑SQL规范、编辑SQL规范内规则、将SQL规范与实例关联等丰富的功能。
创建SQL规范
用户可以根据数据库类型创建不同的SQL规范,创建方式有直接创建和复制创建两种。创建好的SQL规范会包含默认的规则集,用户可根据自身需求调整规则内容,并与相应的实例进行关联。
删除SQL规范
用户可以删除无用的SQL规范,需要注意的是,默认规范不可删除,与实例关联的规范不可删除。
编辑SQL规范
用户可以编辑非内置SQL规范的规范名称和描述,对不同的SQL规范进行区分。
搜索SQL规范
用户可以通过规范名称对SQL规范进行模糊搜索。
关联实例
用户可以在SQL规范列表界面点击关联实例,在弹出的实例列表中选择实例与SQL规范关联。此外用户可以点击已关联实例,查看与当前SQL规范关联的实例列表信息。
编辑规则
用户可以在SQL规范列表界面点击编辑,进入规则编辑界面。在此界面,用户可以通过规则类型、规则级别、规则名称对规则进行查询,也可以编辑规则的生效状态、规则级别、某些规则的参数值、描述等内容。
规则内容
DMS提供默认的MySQL数据库的SQL规范,规范内包含43条规则,具体如下表:
规则类型 适用的数据库 适用的SQL语句 规则名称 库 MySQL CREATE DATABASE 限制创建库的字符集
表
MySQL
CREATE TABLE
表要有主键 表要有备注 限制表名大小写 限制表存储引擎 禁止使用分区表 表要包含哪些列 限制表字符集 表名不能是关键字 限制表字段数量
列
MySQL
CREATE TABLE
字段名不能是关键字 限制字段名大小写 不能设置列的字符集 限制列不能使用部分数据类型 列要有注释并限制长度 限制char类型字段长度 限制varchar类型字段长度 索引 MySQL CREATE TABLE 限制单表中索引数量
更新
MySQL
UPDATE
DELETE
update/delete语句限制多表关联的数量 update/delete语句建议指定where条件 update/delete语句检测where条件是否包含子查询 update/delete语句不能有order by子句 update/delete语句检测涉及表/字段是否存在 限制某些表UPDATE/DELETE单个语句的总影响行数 update语句检测是否更新了主键
写入
MySQL
INSERT
插入语句建议指定insert字段列表 插入语句中insert字段名不能重复 插入语句中insert字段列表要和值列表匹配 插入语句限制一条insert values的总行数 插入语句检测insert的表/字段是否存在
查询
MySQL
SELECT
select语句不建议group by或order by表达式或函数 select语句不建议order by多个字段使用不同方向排序 select语句不建议使用having子句 select语句不建议使用order by rand() select语句不建议使用select * select语句不建议使用union select语句不建议对不同的表group by或order by select语句建议指定where条件 select语句限制limit的offset大小 select语句限制多表关联的数量 多表关联的select语句建议指定where条件
语句
MySQL
包含WHERE条件子句的SELECT、UPDATE、DELETE语句
where条件中不建议使用反向查询(not in/not like) where条件中检测是否通过“or”操作符连接过滤条件