Python連接MySQL報錯:缺少cryptography庫的解決辦法
發(fā)現(xiàn)問題
在使用 Python 連接 MySQL 數(shù)據(jù)庫時,有時可能會遇到這樣的錯誤:
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 這個第三方加密庫來完成密碼的加密處理。如果沒有安裝該庫,就會出現(xiàn)上述錯誤。
解決方法
方法一:安裝 cryptography 庫(推薦)
如果你有權限安裝 Python 包,這是最直接的解決方法。
pip install cryptography
安裝完成后重新運行你的 Python 腳本即可。
適用場景:
- 本地開發(fā)環(huán)境
- CI/CD 流水線
- 可以自主安裝依賴的項目
方法二:修改MySQL用戶認證方式
如果你有數(shù)據(jù)庫管理員權限,可以將用戶認證方式改為傳統(tǒng)的 mysql_native_password。
執(zhí)行以下SQL語句(請?zhí)鎿Q用戶名和密碼):
ALTER USER '用戶名' IDENTIFIED WITH mysql_native_password BY '密碼'; FLUSH PRRIVILEGES;
適用場景:
- 沒有權限安裝 Python 包的環(huán)境
- 臨時測試或兼容舊項目
- 對安全性要求不極高的內網(wǎng)環(huán)境
方法對比表
| 方法 | 優(yōu)點 | 缺點 | 適用場景 |
|---|---|---|---|
| 安裝 cryptography | 安全、官方推薦、一勞永逸 | 需安裝額外依賴 | 開發(fā)、測試、生產(chǎn) |
| 修改認證方式 | 無需安裝新包、快速解決 | 安全性降低、需數(shù)據(jù)庫權限 | 臨時測試、內網(wǎng)環(huán)境 |
解決方法速覽

總結
- 出現(xiàn)該錯誤是因為 MySQL 使用了新的加密認證方式,而 PyMySQL 需要
cryptography庫來支持。 - 推薦做法:在開發(fā)環(huán)境中直接安裝
cryptography。 - 備用方案:若無法安裝依賴,可臨時將用戶認證方式改為
mysql_native_password。
根據(jù)你的實際環(huán)境和權限,選擇最適合的方案即可順利連接 MySQL 數(shù)據(jù)庫。
注意:修改認證方式會降低安全性,請謹慎在生產(chǎn)環(huán)境中使用。建議在測試或內部系統(tǒng)中使用。
到此這篇關于Python連接MySQL報錯:缺少cryptography庫的解決辦法的文章就介紹到這了,更多相關缺少cryptography庫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
用Python實現(xiàn)童年貪吃蛇小游戲功能的實例代碼
這篇文章主要介紹了用Python實現(xiàn)童年貪吃蛇小游戲功能的實例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
django rest framework 實現(xiàn)用戶登錄認證詳解
這篇文章主要介紹了django rest framework 實現(xiàn)用戶登錄認證詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-07-07

