首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您能在MySQL中看到其他用户的会话变量吗?

问您能在MySQL中看到其他用户的会话变量吗?
EN

Database Administration用户
提问于 2014-05-14 18:59:24
回答 3查看 7.9K关注 0票数 6

在MySQL中,使用SHOW GLOBAL VARIABLES可以查看全局变量。SHOW SESSION VARIABLES是该会话的变量设置。

有没有办法从超级用户连接中查看其他活动的、已连接的用户的SESSION变量?例如,是否有查询或视图显示哪些活动会话的变量设置与全局变量不同?

EN

回答 3

Database Administration用户

回答已采纳

发布于 2014-05-14 19:31:36

问题#1

是否有办法从超级用户连接中查看其他活动的、已连接的用户的会话变量?

不,不可能。

问题2

是否有查询或视图显示哪些活动会话的变量设置与全局变量不同?

不,不可能。

警告

从您的个人连接,您可以运行以下

代码语言:javascript
复制
SELECT A.variable_name VarName,
A.variable_value Global_Value,
B.variable_value Session_Value FROM
information_schema.global_variables A INNER JOIN
information_schema.session_variables B USING (variable_name)
WHERE A.variable_value <> B.variable_value;

查看哪些会话设置与全局设置不同。

例如,下面是我正在运行的

代码语言:javascript
复制
mysql> SHOW VARIABLES LIKE 'version%';
+-------------------------+------------------------------+
| Variable_name           | Value                        |
+-------------------------+------------------------------+
| version                 | 5.6.15                       |
| version_comment         | MySQL Community Server (GPL) |
| version_compile_machine | x86_64                       |
| version_compile_os      | Win64                        |
+-------------------------+------------------------------+
4 rows in set (0.00 sec)

mysql>

注意查询的输出

代码语言:javascript
复制
mysql> SELECT A.variable_name VarName,
    -> A.variable_value Global_Value,
    -> B.variable_value Session_Value FROM
    -> information_schema.global_variables A INNER JOIN
    -> information_schema.session_variables B USING (variable_name)
    -> WHERE A.variable_value <> B.variable_value;
+--------------------------+-------------------+------------------+
| VarName                  | Global_Value      | Session_Value    |
+--------------------------+-------------------+------------------+
| CHARACTER_SET_CONNECTION | latin1            | cp850            |
| CHARACTER_SET_RESULTS    | latin1            | cp850            |
| CHARACTER_SET_DATABASE   | latin1            | utf8             |
| COLLATION_DATABASE       | latin1_swedish_ci | utf8_general_ci  |
| CHARACTER_SET_CLIENT     | latin1            | cp850            |
| COLLATION_CONNECTION     | latin1_swedish_ci | cp850_general_ci |
+--------------------------+-------------------+------------------+
6 rows in set (0.08 sec)

如果您希望找到所有具有这种差异的活动连接,也许您可以让应用程序将该查询的输出连同连接ID (使用连接函数)一起转储到文本文件中,并按您的意愿解析它。

票数 2
EN

Database Administration用户

发布于 2018-05-05 00:23:44

从MySQL 5.7开始,performance_schema可以提供这些信息。

是否有办法从超级用户连接中查看其他活动的、已连接的用户的会话变量?

你可以从performance_schema.variables_by_thread那里得到这些。

您需要知道线程ID。来自SHOW PROCESSLIST的ID是进程ID。知道进程ID之后,可以从performance_schema.threads查找线程ID。

是否有查询或视图显示哪些活动会话的变量设置与全局变量不同?

你当然可以。

代码语言:javascript
复制
SELECT VARIABLE_NAME, gv.VARIABLE_VALUE, tv.VARIABLE_VALUE
FROM performance_schema.global_variables gv
  JOIN performance_schema.variables_by_thread tv USING (VARIABLE_NAME)
WHERE gv.VARIABLE_VALUE <> tv.VARIABLE_VALUE
  AND THREAD_ID = ?;
票数 10
EN

Database Administration用户

发布于 2016-02-16 18:49:45

以正常的方式是不可能的。我们知道一些关于当前会话的“显示状态,如‘%压缩%’”,但尚未从其他会话中了解。嗯,在MySQL社区上是可能的,但是非常困难,您需要修改源代码并将这个函数添加到MySQL中,这样您就可以构建一个新的可执行文件。示例:当每个会话开始时,您可以在INFORMATION_SCHEME上创建一个包含每个会话数据的新表,这样您就可以了解体育了。每个ID进程的会话变量压缩。另一个想法是,如果您只有一个应用程序访问您的MySQL,您可以在应用程序中编写一些代码,将有关会话的信息写入您的表中,这样您就可以从应用程序中访问所有连接的信息。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/65144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档