MySQL业务用户无法修改的会话级别参数

打印 上一主题 下一主题

主题 1036|帖子 1036|积分 3108

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
对于MySQL的系统参数,有些参数只能在全局级别(global)修改,有些参数能在全局和会话(session)级别修改。对于能在会话级别修改的参数,应用用户也可以在当前会话中修改需要的参数来实现不同的业务需求。
比如sql_mode参数,不同的应用可以根据不同的需求在各自的session中进行修改。此外,在MySQL8.0中推出的hint功能中有一个叫set_var,即可以在执行的SQL语句中自定义session级别参数,十分方便。比如下面这条sql,通过加hint控制了一条sql的最大执行时间:
  1. mysql> select /*+ set_var(max_execution_time=1000)*/ * from sbtest1;
  2. ERROR 3024 (HY000): Query execution was interrupted, maximum statement execution time exceeded
复制代码
但也不是任何session参数都能随便修改的,比如下面这个例子中,修改sql_require_primary_key参数会提示权限不足,至少需要SESSION_VARIABLES_ADMIN权限。应用用户一般是没有这个权限的。
  1. mysql> show variables like '%sql_req%';
  2. +-------------------------+-------+
  3. | Variable_name           | Value |
  4. +-------------------------+-------+
  5. | sql_require_primary_key | ON    |
  6. +-------------------------+-------+
  7. 1 row in set (0.00 sec)
  8. mysql> set sql_require_primary_key=0;
  9. ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER, SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s) for this operation
复制代码
对于这一类参数,在官方文档中都会有如下说明,用户需要有足够的权限才能修改:

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户云卷云舒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表