延伸 MySQL 9.0  /  ...  /  使用測試協定追蹤外掛程式

4.4.11.1 使用測試協定追蹤外掛程式

MySQL 包含一個測試協定追蹤外掛程式,用於說明此類外掛程式提供的資訊,並作為撰寫其他協定追蹤外掛程式的指南。若要查看測試外掛程式的運作方式,請使用 MySQL 原始碼發行版;二進位發行版在建置時會停用測試外掛程式。

透過啟用 WITH_TEST_TRACE_PLUGIN CMake 選項來設定 MySQL,即可啟用測試協定追蹤外掛程式。這會導致建置測試追蹤外掛程式,並且讓 MySQL 用戶端程式載入它,但預設情況下,該外掛程式不會產生任何作用。使用這些環境變數來控制外掛程式

  • MYSQL_TEST_TRACE_DEBUG:將此變數設定為非 0 的值,以使測試外掛程式在 stderr 上產生診斷輸出。

  • MYSQL_TEST_TRACE_CRASH:將此變數設定為非 0 的值,以使測試外掛程式在偵測到無效的追蹤事件時中止用戶端程式。

注意

來自測試協定追蹤外掛程式的診斷輸出可能會洩漏密碼和其他敏感資訊。

假設已從啟用測試外掛程式的原始碼建置 MySQL 安裝,您可以查看 mysql 用戶端與 MySQL 伺服器之間的通訊追蹤,如下所示

$> export MYSQL_TEST_TRACE_DEBUG=1
shqll> mysql
test_trace: Test trace plugin initialized
test_trace: Starting tracing in stage CONNECTING
test_trace: stage: CONNECTING, event: CONNECTING
test_trace: stage: CONNECTING, event: CONNECTED
test_trace: stage: WAIT_FOR_INIT_PACKET, event: READ_PACKET
test_trace: stage: WAIT_FOR_INIT_PACKET, event: PACKET_RECEIVED
test_trace: packet received: 87 bytes
  0A 35 2E 37 2E 33 2D 6D  31 33 2D 64 65 62 75 67   .5.7.3-m13-debug
  2D 6C 6F 67 00 04 00 00  00 2B 7C 4F 55 3F 79 67   -log.....+|OU?yg
test_trace: 004: stage: WAIT_FOR_INIT_PACKET, event: INIT_PACKET_RECEIVED
test_trace: 004: stage: AUTHENTICATE, event: AUTH_PLUGIN
test_trace: 004: Using authentication plugin: mysql_native_password
test_trace: 004: stage: AUTHENTICATE, event: SEND_AUTH_RESPONSE
test_trace: 004: sending packet: 188 bytes
  85 A6 7F 00 00 00 00 01  21 00 00 00 00 00 00 00   .?......!.......
  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
...
mysql> quit
test_trace: 008: stage: READY_FOR_COMMAND, event: SEND_COMMAND
test_trace: 008: QUIT
test_trace: 008: stage: READY_FOR_COMMAND, event: PACKET_SENT
test_trace: 008: packet sent: 0 bytes
test_trace: 008: stage: READY_FOR_COMMAND, event: DISCONNECTED
test_trace: 008: Connection  closed
test_trace: 008: Tracing connection has ended
Bye
test_trace: Test trace plugin de-initialized

若要停用追蹤輸出,請執行此操作

$> MYSQL_TEST_TRACE_DEBUG=