ADD SQLBLACKLIST
ADD SQLBLACKLIST 向 SQL 黑名单添加正则表达式,以禁止某些 SQL 模式。启用 SQL 黑名单功能后,StarRocks 会将所有要执行的 SQL 语句与黑名单中的 SQL 正则表达式进行比较。StarRocks 不会执行与黑名单中任何正则表达式匹配的 SQL,并返回错误。这可以防止某些 SQL 触发集群崩溃或意外行为。
有关 SQL 黑名单的更多信息,请参阅 管理 SQL 黑名单。
提示
- 此操作需要 SYSTEM 级别的 BLACKLIST 权限。您可以按照 GRANT 中的说明授予此权限。
- 目前,StarRocks 支持将 SELECT 语句添加到 SQL 黑名单。
语法
ADD SQLBLACKLIST "<sql_reg_expr>"
参数
sql_reg_expr
:用于指定特定 SQL 模式的正则表达式。为了区分 SQL 语句中的特殊字符和正则表达式中的特殊字符,您需要使用转义字符 \
作为 SQL 语句中特殊字符的前缀,例如 (
、)
和 +
。鉴于 (
和 )
经常在 SQL 语句中使用,StarRocks 可以直接识别 SQL 语句中的 (
和 )
。您无需对 (
和 )
使用转义字符。
示例
示例 1:将 count(\*)
添加到 SQL 黑名单。
mysql> ADD SQLBLACKLIST "select count(\\*) from .+";
示例 2:将 count(distinct )
添加到 SQL 黑名单。
mysql> ADD SQLBLACKLIST "select count(distinct .+) from .+";
示例 3:将 order by limit x, y, 1 <= x <=7, 5 <=y <=7
添加到 SQL 黑名单。
mysql> ADD SQLBLACKLIST "select id_int from test_all_type_select1
order by id_int
limit [1-7], [5-7]";
示例 4:将复杂的 SQL 正则表达式添加到 SQL 黑名单。此示例演示如何在 SQL 语句中使用转义字符 *
和 -
。
mysql> ADD SQLBLACKLIST
"select id_int \\* 4, id_tinyint, id_varchar
from test_all_type_nullable
except select id_int, id_tinyint, id_varchar
from test_basic
except select (id_int \\* 9 \\- 8) \\/ 2, id_tinyint, id_varchar
from test_all_type_nullable2
except select id_int, id_tinyint, id_varchar
from test_basic_nullable";