Python连接MySQL报错:缺少cryptography库的解决办法

 更新时间:2026年06月04日 11:04:08   作者:XYiFfang  
这篇文章主要介绍了Python连接MySQL报错:缺少cryptography库的两种解决办法,分别是安装cryptography库和修改MySQL用户认证方式,两种方法各有适用场景,需要的朋友可以参考下

发现问题

在使用 Python 连接 MySQL 数据库时,有时可能会遇到这样的错误:

RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods

这篇文章将带你快速理解该错误的原因,并提供两种实用的解决方法。

错误原因

MySQL 8.0 及以上版本默认使用 caching_sha2_passwordsha256_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 数据库。

注意:修改认证方式会降低安全性,请谨慎在生产环境中使用。建议在测试或内部系统中使用。

到此这篇关于Python连接MySQL报错:缺少cryptography库的解决办法的文章就介绍到这了,更多相关缺少cryptography库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python多线程实例教程

    Python多线程实例教程

    这篇文章主要介绍了Python多线程,对比了新旧版本的Python在实现多线程的特点,并采用threading模块的实例来讲述了多线程的技巧,需要的朋友可以参考下
    2014-09-09
  • 在Pycharm中修改文件默认打开方式的方法

    在Pycharm中修改文件默认打开方式的方法

    今天小编就为大家分享一篇在Pycharm中修改文件默认打开方式的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 详解python使用递归、尾递归、循环三种方式实现斐波那契数列

    详解python使用递归、尾递归、循环三种方式实现斐波那契数列

    本篇文章主要介绍了python使用递归、尾递归、循环三种方式实现斐波那契数列,非常具有实用价值,需要的朋友可以参考下
    2018-01-01
  • python3 requests库实现多图片爬取教程

    python3 requests库实现多图片爬取教程

    今天小编就为大家分享一篇python3 requests库实现多图片爬取教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python散点图与折线图绘制过程解析

    Python散点图与折线图绘制过程解析

    这篇文章主要介绍了Python散点图与折线图绘制过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Python实现某论坛自动签到功能

    Python实现某论坛自动签到功能

    这篇文章主要介绍了Python实现论坛自动签到功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Python中的套接字编程是什么?

    Python中的套接字编程是什么?

    不可否认,互联网已成为“存在之魂”,其活动以“连接”或“网络”为特征.使用套接字的最关键的基础之一,使这些网络成为可能.本文涵盖了有关使用Python进行套接字编程的所有领域.套接字可以帮助您建立这些连接,而Python无疑可以简化连接,需要的朋友可以参考下
    2021-06-06
  • python单链路性能测试实践

    python单链路性能测试实践

    这篇文章主要为大家介绍了python单链路性能测试实践示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • python如何求取指定范围内的质数

    python如何求取指定范围内的质数

    这篇文章主要介绍了python如何求取指定范围内的质数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • python实现字符串和日期相互转换的方法

    python实现字符串和日期相互转换的方法

    这篇文章主要介绍了python实现字符串和日期相互转换的方法,涉及Python中time和datetime函数使用技巧,需要的朋友可以参考下
    2015-05-05

最新评论