对设置的限制
在设置的约束可以在定义 profiles 一节 user.xml 配置文件,并禁止用户更改一些设置与 SET 查询。
约束定义如下:
<profiles><user_name><constraints><setting_name_1><min>lower_boundary</min></setting_name_1><setting_name_2><max>upper_boundary</max></setting_name_2><setting_name_3><min>lower_boundary</min><max>upper_boundary</max></setting_name_3><setting_name_4><readonly/></setting_name_4></constraints></user_name></profiles>
如果用户试图违反约束,将引发异常,并且设置不会更改。
支持三种类型的约束: min, max, readonly. 该 min 和 max 约束指定数值设置的上边界和下边界,并且可以组合使用。 该 readonly constraint指定用户根本无法更改相应的设置。
示例: 让 users.xml 包括行:
<profiles><default><max_memory_usage>10000000000</max_memory_usage><force_index_by_date>0</force_index_by_date>...<constraints><max_memory_usage><min>5000000000</min><max>20000000000</max></max_memory_usage><force_index_by_date><readonly/></force_index_by_date></constraints></default></profiles>
以下查询都会引发异常:
SET max_memory_usage=20000000001;SET max_memory_usage=4999999999;SET force_index_by_date=1;
Code: 452, e.displayText() = DB::Exception: Setting max_memory_usage should not be greater than 20000000000.Code: 452, e.displayText() = DB::Exception: Setting max_memory_usage should not be less than 5000000000.Code: 452, e.displayText() = DB::Exception: Setting force_index_by_date should not be changed.
注: 该 default 配置文件具有特殊的处理:所有定义的约束 default 配置文件成为默认约束,因此它们限制所有用户,直到为这些用户显式复盖它们。
