延伸 MySQL 9.0  /  ...  /  使用驗證外掛程式

4.4.9.3 使用驗證外掛程式

若要編譯和安裝外掛程式庫檔案,請使用第 4.4.3 節「編譯和安裝外掛程式庫」中的指示。若要讓程式庫檔案可供使用,請將其安裝在外掛程式目錄中(由 plugin_dir 系統變數命名的目錄)。

向伺服器註冊伺服器端外掛程式。例如,若要在伺服器啟動時載入外掛程式,請使用 --plugin-load=auth_simple.so 選項,並根據您的平台調整 .so 字尾。

建立一個使用者,伺服器將針對此使用者使用 auth_simple 外掛程式進行驗證

mysql> CREATE USER 'x'@'localhost'
    -> IDENTIFIED WITH auth_simple;

使用用戶端程式以使用者 x 的身分連線到伺服器。伺服器端 auth_simple 外掛程式會與用戶端程式通訊,告知它應該使用用戶端 auth_simple 外掛程式,而後者會將密碼傳送至伺服器。伺服器外掛程式應拒絕傳送空密碼的連線,並接受傳送非空密碼的連線。以每種方式叫用用戶端程式來驗證此點

$> mysql --user=x --skip-password
ERROR 1045 (28000): Access denied for user 'x'@'localhost' (using password: NO)

$> mysql --user=x --password
Enter password: abc
mysql>

由於伺服器外掛程式接受任何非空密碼,因此應被視為不安全。在測試外掛程式以驗證其是否正常運作後,請重新啟動伺服器,而不要使用 --plugin-load 選項,以免無意中讓伺服器在載入不安全的驗證外掛程式的情況下執行。此外,使用 DROP USER 'x'@'localhost' 刪除使用者。

有關載入和使用驗證外掛程式的更多資訊,請參閱安裝和解除安裝外掛程式,以及可插拔驗證

如果您正在撰寫支援使用驗證外掛程式的用戶端程式,通常此類程式會透過呼叫 mysql_options() 來設定 MYSQL_DEFAULT_AUTHMYSQL_PLUGIN_DIR 選項,進而載入外掛程式

char *plugin_dir = "path_to_plugin_dir";
char *default_auth = "plugin_name";

/* ... process command-line options ... */

mysql_options(&mysql, MYSQL_PLUGIN_DIR, plugin_dir);
mysql_options(&mysql, MYSQL_DEFAULT_AUTH, default_auth);

通常,程式也會接受 --plugin-dir--default-auth 選項,讓使用者可以覆寫預設值。

如果用戶端程式需要較低層級的外掛程式管理,則用戶端程式庫包含採用 st_mysql_client_plugin 引數的函式。請參閱C API 用戶端外掛程式介面