欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

問題

對于一個給定的 MySQL 連接,我們如何才能知道它來自于哪個客戶端的哪個進程呢?

HandshakeResponse

MySQL-Client 在連接 MySQL-Server 的時候,不只會把用戶名密碼發(fā)送到服務端,還會把當前進程id,操作系統(tǒng)名,主機名等等信息也發(fā)到服務端。這個數據包就叫 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é)格式如下,要傳輸的數據就在包的最后部分。

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 發(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 連接的數據庫,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之如何實現(xiàn)行列轉換

    Mysql之如何實現(xiàn)行列轉換

    這篇文章主要介紹了Mysql之如何實現(xiàn)行列轉換問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • mysql內連接,連續(xù)兩次使用同一張表,自連接方式

    mysql內連接,連續(xù)兩次使用同一張表,自連接方式

    這篇文章主要介紹了mysql內連接,連續(xù)兩次使用同一張表,自連接方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • mysql 左連接、右連接和內連接

    mysql 左連接、右連接和內連接

    以MySql為例。在MySQL數據庫中建立兩張數據表,并分別插入一些數據。
    2009-07-07
  • MYSQL數據庫管理之權限管理解讀

    MYSQL數據庫管理之權限管理解讀

    這篇文章主要介紹了MYSQL數據庫管理之權限管理解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • MySQL中查詢當天數據中離時間點最近的數據(兩種方法)

    MySQL中查詢當天數據中離時間點最近的數據(兩種方法)

    在 MySQL 中,你可以使用 ORDER BY 和 LIMIT 語句來查詢當天數據中離指定時間最近的數據,本文給大家介紹MySQL中查詢當天數據中離時間點最近的數據,感興趣的朋友一起看看吧
    2023-12-12
  • Mysql虛擬列的實現(xiàn)示例

    Mysql虛擬列的實現(xiàn)示例

    MySQL虛擬列是一種特殊的列,是mysql-5.7版本引入的一個新特性,本文主要介紹了Mysql虛擬列的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • 一篇文章學會MySQL基本查詢和運算符

    一篇文章學會MySQL基本查詢和運算符

    在MySQL數據庫操作中,運算符扮演著較為重要的角色,連接表達式中的各個操作數,其作用是用來指明對操作數所進行的運算,下面這篇文章主要給大家介紹了關于MySQL基本查詢和運算符的相關資料,需要的朋友可以參考下
    2022-08-08
  • Lost connection to MySQL server during query的解決

    Lost connection to MySQL server during query的解決

    經常在執(zhí)行sql語句時,會發(fā)現(xiàn)這個問題,一般就是連接mysql數據庫不穩(wěn)定
    2008-06-06
  • mysql制作外鍵出現(xiàn)duplicate?key?name錯誤問題及解決

    mysql制作外鍵出現(xiàn)duplicate?key?name錯誤問題及解決

    這篇文章主要介紹了mysql制作外鍵出現(xiàn)duplicate?key?name錯誤問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 將SQL查詢結果保存為新表的方法實例

    將SQL查詢結果保存為新表的方法實例

    有時我們要把查詢的結果保存到新表里,創(chuàng)建新表,查詢,插入顯得十分麻煩,下面這篇文章主要給大家介紹了關于將SQL查詢結果保存為新表的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12

最新評論