mySQL是否为用户连接使用特定的连接ID(thread_id)范围?我注意到我所做的所有连接都在50的范围内,如55,56。但是还有其他连接(不是我的)是8和9。
或者是否有一个表我只能选择用户conenction id?
我正在使用的查询是:
USE mysql;
SELECT * FROM general_log
WHERE command_type='query' AND argument REGEXP ('^(SELECT|INSERT|DELETE|UPDATE).*') AND thread_id != CONNECTION_ID()
ORDER BY event_time DESC;
但是id喜欢过滤掉所有无用户查询。
修改
我发现了另一个表,所以现在我的查询看起来像这样,虽然processlist
显然只提供了有效的连接细节,但我仍然无法判断它是用户还是系统进程进行连接
USE mysql;
#TRUNCATE general_log;
SELECT * FROM general_log AS gl
LEFT JOIN information_schema.PROCESSLIST AS pl ON pl.ID = gl.thread_id
WHERE command_type='query' AND argument REGEXP ('^(SELECT|INSERT|DELETE|UPDATE).*') AND thread_id != CONNECTION_ID()
ORDER BY event_time DESC;
答案 0 :(得分:1)
您最初的问题的答案是“不”。
所有连接共享相同的连接ID范围,因此该号码不会告诉您有关连接的任何有用信息。
如果要排除某些用户(可能是“repl”或“system user”),那么可以使用user_host列执行此操作:
USE mysql;
SELECT * FROM general_log
WHERE command_type='query'
AND argument REGEXP ('^(SELECT|INSERT|DELETE|UPDATE).*')
AND thread_id != CONNECTION_ID()
AND user_host NOT IN (...)
ORDER BY event_time DESC;