最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年11月20日 14:28:03   作者:蔣樂興  
這篇文章主要介紹了MySQL 如何連接對應的客戶端進程,幫助大家更好的理解和學習MySQL,感興趣的朋友可以了解下

問題

對于一個給定的 MySQL 連接,我們?nèi)绾尾拍苤浪鼇碜杂谀膫€客戶端的哪個進程呢?

HandshakeResponse

MySQL-Client 在連接 MySQL-Server 的時候,不只會把用戶名密碼發(fā)送到服務端,還會把當前進程id,操作系統(tǒng)名,主機名等等信息也發(fā)到服務端。這個數(shù)據(jù)包就叫 HandshakeResponse 官方有對其格式進行詳細的說明。

我自己改了一個連接驅動,用這個驅動可以看到連接時發(fā)送了哪些信息。

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 包的字節(jié)格式如下,要傳輸?shù)臄?shù)據(jù)就在包的最后部分。

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
 }

解決方案

從前面的內(nèi)容我們可以知道 MySQL-Client 確實向 MySQL-Server 發(fā)送了當前的進程 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 號進程發(fā)起的。

檢查

我剛才是用的 ipython 連接的數(shù)據(jù)庫,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 如何連接對應的客戶端進程的詳細內(nèi)容,更多關于MySQL 連接對應的客戶端進程的資料請關注腳本之家其它相關文章!

相關文章

  • 詳解Mysql和Oracle之間的誤區(qū)

    詳解Mysql和Oracle之間的誤區(qū)

    mysql 和Oracle 在開發(fā)中的使用是隨處可見的,那就簡單去了解一下這倆款火的不行的數(shù)據(jù)庫。
    2021-05-05
  • Mysql去重的幾種方式分步講解

    Mysql去重的幾種方式分步講解

    SQL去重是數(shù)據(jù)分析工作中比較常見的一個場景,下面這篇文章主要給大家介紹了關于SQL去重的3種實用方法的相關資料,文中通過圖文以及實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • MySQL四種日志binlog/redolog/relaylog/undolog詳解

    MySQL四種日志binlog/redolog/relaylog/undolog詳解

    undo?log主要存儲的也是邏輯日志,比如我們要insert一條數(shù)據(jù)了,那undo?log會記錄的一條對應的delete日志,我們要update一條記錄時,它會記錄一條對應相反的update記錄,這篇文章主要介紹了MySQL四種日志binlog/redolog/relaylog/undolog,需要的朋友可以參考下
    2024-08-08
  • mysql update語句的用法詳解

    mysql update語句的用法詳解

    本文詳細介紹了,mysql中update語句的用法,系統(tǒng)全面的學習下update更新語句的用法,有需要的朋友可以參考下
    2014-08-08
  • msyql show命令匯總

    msyql show命令匯總

    本篇文章是對msyql中的show命令進行了匯總,需要的朋友參考下
    2013-06-06
  • mysql查詢上下級機構的方法實例

    mysql查詢上下級機構的方法實例

    大家應該都知道表里有上下級機構的,下面這篇文章主要給大家介紹了關于mysql查詢上下級機構的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • 解讀sql中timestamp和datetime之間的轉換

    解讀sql中timestamp和datetime之間的轉換

    這篇文章主要介紹了解讀sql中timestamp和datetime之間的轉換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • MySQL mysqladmin客戶端的使用簡介

    MySQL mysqladmin客戶端的使用簡介

    這篇文章主要介紹了MySQL mysqladmin客戶端的使用簡介,幫助大家更好的理解和學習使用MySQL,感興趣的朋友可以了解下
    2021-03-03
  • MySQL錯誤提示:sql_mode=only_full_group_by完美解決方案

    MySQL錯誤提示:sql_mode=only_full_group_by完美解決方案

    有時候遇到數(shù)據(jù)庫重復數(shù)據(jù),需要將數(shù)據(jù)進行分組,并取出其中一條來展示,這時就需要用到group by語句,下面這篇文章主要給大家介紹了關于MySQL錯誤提示:sql_mode=only_full_group_by的完美解決方案,需要的朋友可以參考下
    2022-10-10
  • mysql臨時表用法分析【查詢結果可存在臨時表中】

    mysql臨時表用法分析【查詢結果可存在臨時表中】

    這篇文章主要介紹了mysql臨時表用法,結合實例形式分析了MySQL將查詢結果存儲在臨時表中的相關操作技巧,需要的朋友可以參考下
    2019-08-08

最新評論

开原市| 新民市| 罗甸县| 莱芜市| 湟中县| 广州市| 岳阳市| 青铜峡市| 锦州市| 东乌珠穆沁旗| 长沙县| 平乡县| 墨玉县| 通州市| 昌都县| 双鸭山市| 时尚| 邵阳县| 子洲县| 监利县| 中超| 北碚区| 北碚区| 金塔县| 恭城| 南投市| 大姚县| 广东省| 衡东县| 伊春市| 昌黎县| 文化| 江口县| 荔浦县| 宁武县| 和政县| 平和县| 时尚| 通州区| 界首市| 子洲县|