searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

管控用户刚登录mysql时会话值不跟随全局值

2024-09-05 09:26:35
4
0

背景

在官方代码中,用户刚登录mysql时,系统变量的会话值将被赋值为全局值。如果客户修改了sql_mode/long_query_time/time_zone的全局值,管控可能会收到影响,所以不希望管控的用户刚登录时的会话值受用户设置的全局值所影响
 

设计

管控用户刚登录mysql时,sql_mode、long_query_time、time_zone 这三个参数的会话值是指定的,分别指定为:NO_ENGINE_SUBSTITUTION、31536000、'+8:00',而不跟随全局值
 
具体方案:
对于sql_mode 、long_query_time
添加了两个全局的系统变量:rds_user_default_long_query_time,rds_user_default_sql_mode,用来记录管控用户刚登录msyql时long_query_time_double和sql_mode的值,以达到不跟随long_query_time_double和sql_mode全局值的目的。
 
rds_user_default_long_query_time 默认值为 31536000.000000,只读,不可动态修改
rds_user_default_sql_mode默认值为 NO_ENGINE_SUBSTITUTION, 只读,不可动态修改
 
在管控用户开始一个新会话时,待会话值被赋值为全局值之后,将会话线程里sql_mode的值更新为 rds_user_default_sql_mode, long_query_time_double 更新为rds_user_default_long_query_time
 
对于time_zone
生成一个东八区的静态Time_zone对象,待有新连接时,等会话值被赋值为全局值之后,将会话线程里time_zone的值改为静态Time_zone的对象指针
0条评论
0 / 1000
yyy
6文章数
0粉丝数
yyy
6 文章 | 0 粉丝
原创

管控用户刚登录mysql时会话值不跟随全局值

2024-09-05 09:26:35
4
0

背景

在官方代码中,用户刚登录mysql时,系统变量的会话值将被赋值为全局值。如果客户修改了sql_mode/long_query_time/time_zone的全局值,管控可能会收到影响,所以不希望管控的用户刚登录时的会话值受用户设置的全局值所影响
 

设计

管控用户刚登录mysql时,sql_mode、long_query_time、time_zone 这三个参数的会话值是指定的,分别指定为:NO_ENGINE_SUBSTITUTION、31536000、'+8:00',而不跟随全局值
 
具体方案:
对于sql_mode 、long_query_time
添加了两个全局的系统变量:rds_user_default_long_query_time,rds_user_default_sql_mode,用来记录管控用户刚登录msyql时long_query_time_double和sql_mode的值,以达到不跟随long_query_time_double和sql_mode全局值的目的。
 
rds_user_default_long_query_time 默认值为 31536000.000000,只读,不可动态修改
rds_user_default_sql_mode默认值为 NO_ENGINE_SUBSTITUTION, 只读,不可动态修改
 
在管控用户开始一个新会话时,待会话值被赋值为全局值之后,将会话线程里sql_mode的值更新为 rds_user_default_sql_mode, long_query_time_double 更新为rds_user_default_long_query_time
 
对于time_zone
生成一个东八区的静态Time_zone对象,待有新连接时,等会话值被赋值为全局值之后,将会话线程里time_zone的值改为静态Time_zone的对象指针
文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0