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'