解決Python連接MySQL報錯:缺少cryptography庫
在使用 Python 連接 MySQL 數據庫時,有時可能會遇到這樣的錯誤:
RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
這篇文章將帶你快速理解該錯誤的原因,并提供兩種實用的解決方法。
🧠 錯誤原因
MySQL 8.0 及以上版本默認使用 caching_sha2_password
或 sha256_password
認證插件進行用戶身份驗證,這兩種方式比早期的 mysql_native_password
更安全。
而 PyMySQL 默認不包含對這兩種認證方式的支持,需要依賴 cryptography
這個第三方加密庫來完成密碼的加密處理。如果沒有安裝該庫,就會出現上述錯誤。
📌 解決方法
方法一:安裝 cryptography 庫(推薦)
如果你有權限安裝 Python 包,這是最直接的解決方法。
pip install cryptography
安裝完成后重新運行你的 Python 腳本即可。
適用場景:
- 本地開發環境
- CI/CD 流水線
- 可以自主安裝依賴的項目
方法二:修改MySQL用戶認證方式
如果你有數據庫管理員權限,可以將用戶認證方式改為傳統的 mysql_native_password
。
執行以下SQL語句(請替換用戶名和密碼):
ALTER USER '用戶名' IDENTIFIED WITH mysql_native_password BY '密碼';
FLUSH PRRIVILEGES;
適用場景:
- 沒有權限安裝 Python 包的環境
- 臨時測試或兼容舊項目
- 對安全性要求不極高的內網環境
📊 方法對比表
方法 | 優點 | 缺點 | 適用場景 |
---|---|---|---|
安裝 cryptography | 安全、官方推薦、一勞永逸 | 需安裝額外依賴 | 開發、測試、生產 |
修改認證方式 | 無需安裝新包、快速解決 | 安全性降低、需數據庫權限 | 臨時測試、內網環境 |
🧩 解決方法速覽
? 總結
- 出現該錯誤是因為 MySQL 使用了新的加密認證方式,而 PyMySQL 需要
cryptography
庫來支持。 - 推薦做法:在開發環境中直接安裝
cryptography
。 - 備用方案:若無法安裝依賴,可臨時將用戶認證方式改為
mysql_native_password
。
根據你的實際環境和權限,選擇最適合的方案即可順利連接 MySQL 數據庫。
注意:修改認證方式會降低安全性,請謹慎在生產環境中使用。建議在測試或內部系統中使用。