MySQL Workbench 手冊  /  ...  /  更新舊的驗證協定密碼

5.3.10 更新舊的驗證協定密碼

MySQL 4.1 將密碼雜湊從 16 個位元組擴展到 41 個位元組。但是,升級 MySQL 並不會自動更新舊的密碼,因此現有密碼會繼續以已棄用的格式儲存。這是因為 MySQL 不會將密碼儲存為純文字,因此重新產生密碼雜湊需要使用者介入。

相關的 secure_auth 選項在 MySQL 5.6 起預設為啟用。在 MySQL 5.7 起永遠啟用,表示它無法停用。未來的 MySQL 版本將會移除這個選項。啟用此選項後,使用舊格式定義密碼的使用者將無法登入 MySQL。

話雖如此,已棄用的密碼格式無法在 MySQL 5.7 中運作。所有使用舊格式的密碼都必須更新。本節說明如何使用 MySQL Workbench 升級這些密碼。如需瞭解如何使用 MySQL 命令列而非 MySQL Workbench 移轉至舊密碼格式,請參閱 從 Pre-4.1 密碼雜湊和 mysql_old_password 外掛程式移轉

注意

MySQL 儲存密碼的方法是由驗證外掛程式定義的。舊方法使用 mysql_old_password 驗證外掛程式,而目前的預設方法使用 mysql_native_password。自 MySQL 5.6 起,也可以使用 sha256_password 選項,但它需要 SSL 或加密連線。當 MySQL Workbench 升級密碼時,它會將 mysql_old_password 升級為 mysql_native_password。如需有關驗證外掛程式的其他資訊,請參閱 可插拔驗證

注意

mysql_native_password 驗證外掛程式在 MySQL Server 8.0.34 起已棄用,在 MySQL Server 8.4.0 起預設為停用,並在 MySQL Server 9.0.0 起移除。

MySQL Workbench 預設使用 mysql_native_password,因此例如,建立 MySQL Server 8.4 使用者必須啟用它。在您的 MySQL Server 8.4 my.cnf[mysqld] 區段中包含 mysql_native_password=ON 以啟用此外掛程式。

選項取決於您的 secure_auth 選項

升級密碼確實有其限制。以下是兩種情況

  • 如果停用 secure_auth MySQL 伺服器選項,則您可以使用舊密碼格式的使用者登入並更新使用者自己的 MySQL 密碼。但是,由於已移除與舊密碼格式的相容性,因此自 MySQL Workbench 6.3.5 起這不是一個選項。基於這個原因,使用者升級他們自己密碼格式的能力必須使用 MySQL 命令列完成,如 從 Pre-4.1 密碼雜湊和 mysql_old_password 外掛程式移轉 中所述。

    注意

    如果使用 MySQL 命令列不是一個選項,則您可以使用較舊版本的 MySQL Workbench (版本 6.3.4 及更早版本),允許您在 進階 連線標籤下啟用 使用舊的驗證協定 選項。較舊版本的 MySQL Workbench 可在 https://downloads.mysql.com/archives/workbench/ 取得。

    如前所述,secure_auth 在 MySQL 5.6 起預設為啟用,且在 MySQL 5.7 起永遠啟用。

  • 如果啟用 secure_auth,則如果您的使用者密碼是以舊格式儲存,您將無法登入。嘗試將會失敗並發出類似「錯誤 2049 (HY000): 拒絕使用舊 (pre-4.1.1) 驗證協定的連線 (已啟用用戶端選項 'secure_auth')」的錯誤。若要升級密碼,您可以停用 secure_auth (不建議),然後如上所述更新,或以不同的且具有權限的使用者 (例如 root) 登入,以變更其他使用者的密碼。

使用 MySQL Workbench 更新您的密碼

記住以上所述,有兩種方法可以使用 MySQL Workbench 更新密碼。

從管理導覽器開啟 使用者和權限 標籤。從 使用者帳戶 區段選取您要更新的使用者帳戶。如果使用舊的密碼格式,您將會在畫面右下角看到以「此帳戶正在使用 pre-mysql-4.1.1 密碼雜湊類型」開頭的文字,並且在右側看到一個大的 升級 按鈕。從這裡,您可以

  • 適用於所有 MySQL 版本的選項

    手動輸入新密碼或目前的密碼,然後按一下 升級。這會將密碼升級為較新的密碼格式,而 MySQL 使用者現在可以使用您定義的新密碼登入。

  • 適用於 MySQL 5.6 及更新版本的選項

    不要編輯密碼欄位,將其保留不動,然後立即按一下 升級。從這裡,您可以透過按一下 重設為過期 來產生隨機密碼並將其標記為過期。使用這個臨時隨機密碼登入使用者,而當使用者第一次登入時,MySQL 會提示輸入新的密碼。

下圖說明兩種方法中使用的步驟順序

圖 5.24 升級舊密碼:設定新密碼

Content is described in the surrounding text.

圖 5.25 升級舊密碼:重設為隨機過期密碼

Content is described in the surrounding text.

當重設為隨機密碼時,您必須儲存密碼並將其提供給使用者。您會在與下圖類似的新快顯視窗中找到隨機密碼。

圖 5.26 升級舊密碼:隨機密碼快顯

Content is described in the surrounding text.

完成升級後,請注意連線的新的 驗證類型。在下圖所示的範例中,該值從 標準 (舊) 變更為 標準。換句話說,驗證類型從 mysql_old_password 變更為 mysql_native_password

圖 5.27 已升級的密碼:標準 (舊) 到標準

Content is described in the surrounding text.