MySQL 包含一個 mysql_native_password
外掛程式,其可實作原生驗證;也就是說,基於引入可插拔驗證之前所使用的密碼雜湊方法的驗證。
mysql_native_password
驗證外掛程式已棄用,並會在未來版本的 MySQL 中移除。
下表顯示伺服器端和用戶端的外掛程式名稱。
表 8.15 原生密碼驗證的外掛程式與程式庫名稱
外掛程式或檔案 | 外掛程式或檔案名稱 |
---|---|
伺服器端外掛程式 | mysql_native_password |
用戶端外掛程式 | mysql_native_password |
程式庫檔案 | 無 (外掛程式為內建) |
以下章節提供原生可插拔驗證的特定安裝和使用資訊
如需 MySQL 中可插拔驗證的一般資訊,請參閱 章節 8.2.17,「可插拔驗證」。
mysql_native_password
外掛程式存在伺服器和用戶端形式
伺服器端外掛程式是內建於伺服器中,但預設為停用。若要啟用它,請啟動 MySQL 伺服器時使用
--mysql-native-password=ON
或在 MySQL 設定檔的[mysqld]
區段中包含mysql_native_password=ON
。用戶端外掛程式內建於
libmysqlclient
用戶端程式庫,且可供任何連結libmysqlclient
的程式使用。
MySQL 8.4 (及更新版本) 中的 MySQL 客戶端程式預設使用 caching_sha2_password
進行驗證。如果需要,請使用 --default-auth
選項將 mysql_native_password
設定為預設的客戶端驗證外掛程式,如下所示:
$> mysql --default-auth=mysql_native_password ...
在 MySQL 8.4 中,伺服器端的 mysql_native_password
外掛程式預設為停用。為了保持停用狀態,請確保伺服器啟動時未指定 --mysql-native-password
選項。使用 --mysql-native-password=OFF
也能達到此目的,但並非必要。此外,請勿在 MySQL 組態檔中啟用 mysql_native_password
,以保持其停用狀態。
當此外掛程式停用時,所有依賴此外掛程式的操作都將無法存取。具體來說:
使用
mysql_native_password
驗證的已定義使用者帳戶在嘗試連線時會遇到錯誤。$> MYSQL -u userx -p ERROR 1045 (28000): Access denied for user 'userx'@'localhost' (using password: NO)
伺服器會將這些錯誤寫入伺服器日誌。
嘗試建立新使用者帳戶或變更以
mysql_native_password
識別的現有使用者帳戶也會失敗並發出錯誤。mysql> CREATE USER userxx@localhost IDENTIFIED WITH 'mysql_native_password'; ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded mysql> ALTER USER userxy@localhost IDENTIFIED WITH 'mysql_native_password; ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded
有關啟用此外掛程式的說明,請參閱安裝原生可插拔驗證。