文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

8.4.1.12 測試可插拔身份驗證

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

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

注意

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

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

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

外掛程式或檔案 外掛程式或檔案名稱
伺服器端外掛程式 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

若要驗證外掛程式安裝,請檢查資訊綱要 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。

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

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