返回顶部
首页 > 资讯 > 数据库 >MySQL 如何连接对应的客户端进程
  • 177
分享到

MySQL 如何连接对应的客户端进程

MySQL连接对应客户端MySQL连接客户端进程 2022-05-19 18:05:15 177人浏览 薄情痞子
摘要

问题 对于一个给定的 Mysql 连接,我们如何才能知道它来自于哪个客户端的哪个进程呢? HandshakeResponse mysql-Client 在连接 Mysql-Server 的时候,不只会把用户名密码发送

问题

对于一个给定的 Mysql 连接,我们如何才能知道它来自于哪个客户端的哪个进程呢?

HandshakeResponse

mysql-Client 在连接 Mysql-Server 的时候,不只会把用户名密码发送到服务端,还会把当前进程id,操作系统名,主机名等等信息也发到服务端。这个数据包就叫 HandshakeResponse 官方有对其格式进行详细的说明。

我自己改了一个连接驱动,用这个驱动可以看到连接时发送了哪些信息。


2020-05-19 15:31:04,976 - mysql-connector-python.mysql.connector.protocol.MySQLProtocol.make_auth - MainThread - INFO - conn-attrs {'_pid': '58471', '_platfORM': 'x86_64', '_source_host': 'NEEKYJIANG-MB1', '_client_name': 'mysql-connector-Python', '_client_license': 'GPL-2.0', '_client_version': '8.0.20', '_os': 'MacOS-10.15.3'}

HandshakeResponse 包的字节格式如下,要传输的数据就在包的最后部分。


4       capability flags, CLIENT_PROTOCOL_41 always set
4       max-packet size
1       character set
string[23]   reserved (all [0])
string[NUL]  username
 if capabilities & CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA {
lenenc-int   length of auth-response
string[n]   auth-response
 } else if capabilities & CLIENT_SECURE_CONNECTION {
1       length of auth-response
string[n]   auth-response
 } else {
string[NUL]  auth-response
 }
 if capabilities & CLIENT_CONNECT_WITH_DB {
string[NUL]  database
 }
 if capabilities & CLIENT_PLUGIN_AUTH {
string[NUL]  auth plugin name
 }
 if capabilities & CLIENT_CONNECT_ATTRS {
lenenc-int   length of all key-values
lenenc-str   key
lenenc-str   value
  if-more data in 'length of all key-values', more keys and value pairs
 }

解决方案

从前面的内容我们可以知道 MySQL-Client 确实向 MySQL-Server 发送了当前的进程 id ,这为解决问题提供了最基本的可能性。当服务端收到这些信息后双把它们保存到了 performance_schema.session_connect_attrs。

第一步通过 information_schema.processlist 查询关心的连接,它来自于哪个 IP,和它的 processlist_id 。


mysql> select * from information_schema.processlist;
+----+---------+--------------------+--------------------+---------+------+-----------+----------------------------------------------+
| ID | USER  | HOST        | DB         | COMMAND | TIME | STATE   | INFO                     |
+----+---------+--------------------+--------------------+---------+------+-----------+----------------------------------------------+
| 8 | root  | 127.0.0.1:57760  | performance_schema | Query  |  0 | executing | select * from information_schema.processlist |
| 7 | appuser | 172.16.192.1:50198 | NULL        | Sleep  | 2682 |      | NULL                     |
+----+---------+--------------------+--------------------+---------+------+-----------+----------------------------------------------+
2 rows in set (0.01 sec)

第二步通过 performance_schema.session_connect_attrs 查询连接的进程 ID


mysql> select * from session_connect_attrs where processlist_id = 7;               
+----------------+-----------------+------------------------+------------------+
| PROCESSLIST_ID | ATTR_NAME    | ATTR_VALUE       | ORDINAL_POSITION |
+----------------+-----------------+------------------------+------------------+
|       7 | _pid      | 58471         |        0 |
|       7 | _platform    | x86_64         |        1 |
|       7 | _source_host  | NEEKYJIANG-MB1     |        2 |
|       7 | _client_name  | mysql-connector-python |        3 |
|       7 | _client_license | GPL-2.0        |        4 |
|       7 | _client_version | 8.0.20         |        5 |
|       7 | _os       | macOS-10.15.3     |        6 |
+----------------+-----------------+------------------------+------------------+
7 rows in set (0.00 sec)

可以看到 processlist_id = 7 的这个连接是由 172.16.192.1 的 58471 号进程发起的。

检查

我刚才是用的 ipython 连接的数据库,ps 看到的结果也正是 58471 与查询出来的结果一致。


 ps -ef | grep 58471
 501 58471 57741  0 3:24下午 ttys001  0:03.67 /Library/Frameworks/Python.framework/Versions/3.8/Resources/Python.app/Contents/MacOS/Python /Library/Frameworks/Python.framework/Versions/3.8/bin/ipython

以上就是MySQL 如何连接对应的客户端进程的详细内容,更多关于MySQL 连接对应的客户端进程的资料请关注自学编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 如何连接对应的客户端进程

本文链接: https://lsjlt.com/news/9966.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL 如何连接对应的客户端进程
    问题 对于一个给定的 MySQL 连接,我们如何才能知道它来自于哪个客户端的哪个进程呢? HandshakeResponse MySQL-Client 在连接 MySQL-Server 的时候,不只会把用户名密码发送...
    99+
    2022-05-19
    MySQL 连接对应客户端 MySQL 连接客户端进程
  • ConnectNamedPipe不响应客户端的连接
    在Windows中,ConnectNamedPipe函数用于将已创建的命名管道实例与客户端的连接进行同步。如果ConnectName...
    99+
    2023-09-27
    连接
  • 如何解决mysql客户端无法连接远程mysql问题
    本篇内容主要讲解“如何解决mysql客户端无法连接远程mysql问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决mysql客户端无法连接远程mysql...
    99+
    2024-04-02
  • win7客户端如何连接CentOS6.6 MySQL数据库
    这篇文章将为大家详细讲解有关win7客户端如何连接CentOS6.6 MySQL数据库 ,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。服务器端:OS : &...
    99+
    2024-04-02
  • 如何排除客户端连接MySQL失败故障
    这篇文章主要介绍“如何排除客户端连接MySQL失败故障”,在日常操作中,相信很多人在如何排除客户端连接MySQL失败故障问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何排除...
    99+
    2024-04-02
  • mysql客户端navicat连接数据库
    实验环境说明:本地物理机windows7系统,安装vmware workstaion 11,新建centos6.6系统虚拟机并安装LAMP环境;本地物理IP:192.168.71.123   虚拟...
    99+
    2024-04-02
  • MySQL与客户机的连接过程
    这篇文章主要讲解了“MySQL与客户机的连接过程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL与客户机的连接过程”吧!建立和中止与服务器的连接1、...
    99+
    2024-04-02
  • MySQL客户端怎么连接服务器
    这篇文章主要介绍“MySQL客户端怎么连接服务器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL客户端怎么连接服务器”文章能帮助大家解决问题。MySQL客户...
    99+
    2023-01-03
    mysql 服务器
  • 如何将 Go 客户端应用程序连接到 IBM VS Code Fabric Extension?
    Golang不知道大家是否熟悉?今天我将给大家介绍《如何将 Go 客户端应用程序连接到 IBM VS Code Fabric Extension?》,这篇文章主要会讲到等等知识点,如果你在看完本篇文...
    99+
    2024-04-04
  • SSH客户端中如何连接SSH Secure Shell
    这篇文章将为大家详细讲解有关SSH客户端中如何连接SSH Secure Shell,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。运行环境 WINDOWS下安装SSH客户端,名字是SSHSecureShel...
    99+
    2023-06-13
  • 如何实现C#服务端与客户端连接
    今天就跟大家聊聊有关如何实现C#服务端与客户端连接,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#服务端与客户端连接实现的时间性:当服务器开始对端口侦听之后,便可以创建客户端与它建...
    99+
    2023-06-17
  • MySQL client客户端的连接方式是什么
    这篇文章主要介绍“MySQL client客户端的连接方式是什么”,在日常操作中,相信很多人在MySQL client客户端的连接方式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • SSH客户端连接远程服务器
    目录 一、什么是客户端连接远程服务器 二、什么是服务端连接远程服务器 三、查看网络信息 1、图形程序查看网络信息 2、命令查看网络信息 四、SSH客户端(Linux) 五、SSH客户端(windows) 六、SSH远程服务器 一、什么是...
    99+
    2023-09-20
    ssh 服务器 运维 linux
  • Redis怎么远程连接Redis客户端
    本篇内容主要讲解“Redis怎么远程连接Redis客户端”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis怎么远程连接Redis客户端”吧!一 进入redis下的目录二 启动 redis服...
    99+
    2023-07-02
  • 允许远程客户端连接MySQL服务器的方法
    这篇文章主要介绍了允许远程客户端连接MySQL服务器的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。在尝试从客户端系统连接远程mysql服务...
    99+
    2024-04-02
  • Docker部署MySQL并实现客户端连接
    准备工作 在docker内部署任何应用,都需要先下载对应的镜像;下载镜像之前,需要先搜索镜像来确认该镜像是否存在: docker search mysql 从列表可以看到,dock...
    99+
    2024-04-02
  • mongoBD学习(二)客户端的连接
    mongo客户端由bin/mongo启动0、帮助root@adela-vm:/opt/mongodb_simple# ./bin/mongo --helpMongoDB shell version: 2.6...
    99+
    2024-04-02
  • MySQL中异常的客户端连接怎么处理
    这篇文章主要介绍MySQL中异常的客户端连接怎么处理,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!背景1: 程序反馈数据库出现了max_connection的错误, 导致client...
    99+
    2024-04-02
  • 如何限制Golang GRPC中客户端的并发连接
    php小编鱼仔将为大家介绍如何限制Golang GRPC中客户端的并发连接。在使用Golang进行开发时,我们常常会使用GRPC来进行服务间的通信。然而,如果不加以限制,客户端可能会因...
    99+
    2024-02-08
    并发请求
  • 远程客户端连接MysqL数据库太慢怎么办
    这篇文章主要讲解了“远程客户端连接MysqL数据库太慢怎么办”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“远程客户端连接MysqL数据库太慢怎么办”吧!远程...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作