国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

MySQL 如何連接對應的客戶端進程

瀏覽:3日期:2023-10-09 08:03:10

問題

對于一個給定的 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 set4 max-packet size1 character setstring[23] reserved (all [0])string[NUL] username if capabilities & CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA {lenenc-int length of auth-responsestring[n] auth-response } else if capabilities & CLIENT_SECURE_CONNECTION {1 length of auth-responsestring[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-valueslenenc-str keylenenc-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 連接對應的客戶端進程的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 久久国产毛片 | 手机看片国产在线 | 中国国产成人精品久久 | 欧美色v | 一级特黄性色生活片一区二区 | 真实国产普通话对白乱子子伦视频 | 欧美视频久久久 | 亚洲你我色 | 最近日本免费观看视频 | 国产日产欧产精品精品推荐小说 | a一级免费视频 | 亚洲一区二区三区免费视频 | 午夜宅男在线永久免费观看网 | 99久久精品一区二区三区 | 2022久久免费精品国产72精品 | 久久久久综合一本久道 | 免费人成年短视频在线观看免费网站 | 欧美成人伊人十综合色 | 久久er热这里只有精品免费 | 亚洲一区二区精品推荐 | 国产精品情人露脸在线观看 | 久久草在线看 | 免费日韩一级片 | 亚洲精品在线视频观看 | 91精品国产综合久久久久 | 国产精品九九视频 | 欧美精品v日韩精品v国产精品 | 性盈盈影院在线观看 | 台湾三级在线播放 | 亚洲精品高清在线 | 久久精品国产第一区二区 | 亚洲国产精品a一区二区三区 | 成人午夜毛片在线看 | 美女福利视频午夜在线 | 久久精品视频99 | 一本久久a久久精品亚洲 | 亚洲在线一区二区三区 | 日本黄色大片免费观看 | 欧美白人最猛性xxxxx | 久草青青 | 高清国产精品久久久久 |