在MySQL中,使用SHOW GLOBAL VARIABLES可以查看全局变量。SHOW SESSION VARIABLES是该会话的变量设置。
有没有办法从超级用户连接中查看其他活动的、已连接的用户的SESSION变量?例如,是否有查询或视图显示哪些活动会话的变量设置与全局变量不同?
发布于 2014-05-14 19:31:36
是否有办法从超级用户连接中查看其他活动的、已连接的用户的会话变量?
不,不可能。
是否有查询或视图显示哪些活动会话的变量设置与全局变量不同?
不,不可能。
从您的个人连接,您可以运行以下
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;查看哪些会话设置与全局设置不同。
例如,下面是我正在运行的
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>注意查询的输出
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 (使用连接函数)一起转储到文本文件中,并按您的意愿解析它。
发布于 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。
是否有查询或视图显示哪些活动会话的变量设置与全局变量不同?
你当然可以。
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 = ?;发布于 2016-02-16 18:49:45
以正常的方式是不可能的。我们知道一些关于当前会话的“显示状态,如‘%压缩%’”,但尚未从其他会话中了解。嗯,在MySQL社区上是可能的,但是非常困难,您需要修改源代码并将这个函数添加到MySQL中,这样您就可以构建一个新的可执行文件。示例:当每个会话开始时,您可以在INFORMATION_SCHEME上创建一个包含每个会话数据的新表,这样您就可以了解体育了。每个ID进程的会话变量压缩。另一个想法是,如果您只有一个应用程序访问您的MySQL,您可以在应用程序中编写一些代码,将有关会话的信息写入您的表中,这样您就可以从应用程序中访问所有连接的信息。
https://dba.stackexchange.com/questions/65144
复制相似问题