文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  測試可插拔身份驗證

8.4.1.11 測試可插拔身份驗證

MySQL 包含一個測試外掛程式,它會檢查帳戶憑證並將成功或失敗記錄到伺服器錯誤記錄中。這是一個可載入的外掛程式(而非內建),必須在使用前安裝。

測試外掛程式原始碼與伺服器原始碼分開,不像內建的原生外掛程式,因此可以將其視為一個相對簡單的範例來檢視,示範如何撰寫可載入的身份驗證外掛程式。

注意

此外掛程式旨在用於測試和開發目的,不適用於生產環境或暴露於公用網路的伺服器。

下表顯示外掛程式和程式庫檔案名稱。檔案名稱的後綴在您的系統上可能有所不同。該檔案必須位於 plugin_dir 系統變數所指定的目錄中。

表 8.27 測試身份驗證的外掛程式和程式庫名稱

外掛程式或檔案 外掛程式或檔案名稱
伺服器端外掛程式 test_plugin_server
用戶端外掛程式 auth_test_plugin
程式庫檔案 auth_test_plugin.so

以下章節提供特定於測試可插拔身份驗證的安裝和使用資訊

如需關於 MySQL 中可插拔身份驗證的一般資訊,請參閱章節 8.2.17,「可插拔身份驗證」

安裝測試可插拔身份驗證

本節說明如何安裝伺服器端測試身份驗證外掛程式。如需關於安裝外掛程式的一般資訊,請參閱章節 7.6.1,「安裝和解除安裝外掛程式」

為了讓伺服器可以使用外掛程式,外掛程式庫檔案必須位於 MySQL 外掛程式目錄中(該目錄由 plugin_dir 系統變數指定)。如有必要,請在伺服器啟動時設定 plugin_dir 的值來配置外掛程式目錄的位置。

若要在伺服器啟動時載入外掛程式,請使用 --plugin-load-add 選項來指定包含該外掛程式的程式庫檔案。使用此外掛程式載入方法,每次伺服器啟動時都必須提供此選項。例如,將以下行放入伺服器 my.cnf 檔案中,並根據您的平台需要調整 .so 後綴。

[mysqld]
plugin-load-add=auth_test_plugin.so

修改 my.cnf 後,重新啟動伺服器以使新設定生效。

或者,若要在執行時載入外掛程式,請使用以下語句,並根據您的平台需要調整 .so 後綴:

INSTALL PLUGIN test_plugin_server SONAME 'auth_test_plugin.so';

INSTALL PLUGIN 會立即載入外掛程式,並將其註冊到 mysql.plugins 系統表中,以便伺服器在每次後續正常啟動時載入它,而無需使用 --plugin-load-add

若要驗證外掛程式安裝,請檢查 Information Schema PLUGINS 表格或使用 SHOW PLUGINS 語句(請參閱第 7.6.2 節「取得伺服器外掛程式資訊」)。例如:

mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
       FROM INFORMATION_SCHEMA.PLUGINS
       WHERE PLUGIN_NAME LIKE '%test_plugin%';
+--------------------+---------------+
| PLUGIN_NAME        | PLUGIN_STATUS |
+--------------------+---------------+
| test_plugin_server | ACTIVE        |
+--------------------+---------------+

如果外掛程式初始化失敗,請檢查伺服器錯誤日誌以獲取診斷訊息。

若要將 MySQL 帳戶與測試外掛程式關聯,請參閱使用測試可插拔驗證

解除安裝測試可插拔驗證

解除安裝測試驗證外掛程式的方法取決於您安裝它的方式。

  • 如果您在伺服器啟動時使用 --plugin-load-add 選項安裝了外掛程式,請在不使用該選項的情況下重新啟動伺服器。

  • 如果您在執行時使用 INSTALL PLUGIN 語句安裝了外掛程式,它將在伺服器重新啟動後仍保持安裝狀態。若要解除安裝它,請使用 UNINSTALL PLUGIN

    UNINSTALL PLUGIN test_plugin_server;
使用測試可插拔驗證

若要使用測試驗證外掛程式,請建立一個帳戶,並在 IDENTIFIED WITH 子句中指定該外掛程式。

CREATE USER 'testuser'@'localhost'
IDENTIFIED WITH test_plugin_server
BY 'testpassword';

測試驗證外掛程式還需要建立一個代理使用者,如下所示:

CREATE USER testpassword@localhost;
GRANT PROXY ON testpassword@localhost TO testuser@localhost;

然後,在您連線到伺服器時,為該帳戶提供 --user--password 選項。例如:

$> mysql --user=testuser --password
Enter password: testpassword

外掛程式會擷取從客戶端收到的密碼,並將其與 mysql.user 系統表中帳戶列的 authentication_string 欄位中儲存的值進行比較。如果兩個值匹配,則外掛程式會傳回 authentication_string 值作為新的有效使用者 ID。

您可以查看伺服器錯誤日誌,其中會顯示訊息指出驗證是否成功(請注意,密碼會以使用者的形式報告)。

[Note] Plugin test_plugin_server reported:
'successfully authenticated user testpassword'