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实现童年贪吃蛇小游戏功能的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • opencv实践项目之图像拼接详细步骤

    opencv实践项目之图像拼接详细步骤

    OpenCV的应用领域非常广泛,包括图像拼接、图像降噪、产品质检、人机交互、人脸识别、动作识别、动作跟踪、无人驾驶等,下面这篇文章主要给大家介绍了关于opencv实践项目之图像拼接的相关资料,需要的朋友可以参考下
    2023-05-05
  • django rest framework 实现用户登录认证详解

    django rest framework 实现用户登录认证详解

    这篇文章主要介绍了django rest framework 实现用户登录认证详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 一文详解凯撒密码的原理及Python实现

    一文详解凯撒密码的原理及Python实现

    凯撒密码是古罗马恺撒大帝用来对军事情报进行加密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列该字符后面第三个字符。本文主要为大家讲解了凯撒密码的原理及实现,需要的可以参考一下
    2022-08-08
  • YOLO v5引入解耦头部完整步骤

    YOLO v5引入解耦头部完整步骤

    网上有很多添加解耦头的博客,在此记录下我使用解耦头对YOLOv5改进,下面这篇文章主要给大家介绍了关于YOLO v5引入解耦头部的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Python列表之间的数字与字符转化实例

    Python列表之间的数字与字符转化实例

    在python列表操作中,面对需要把列表中的字符串转为礼拜的操作,无需强转,通过简单的几步就可以实现,下面这篇文章主要给大家介绍了关于Python列表之间的数字与字符转化的相关资料,需要的朋友可以参考下
    2023-02-02
  • python 剪切移动文件的实现代码

    python 剪切移动文件的实现代码

    移动复制文件通过os.rename方法,先进行文件是否存在判断,如需更加复杂相同文件判断可以根据文件属性进行判断,此处只使用同名检查,并删除已存在文件,来实现覆盖。这篇文章主要介绍了python 剪切移动文件的实现代码,需要的朋友可以参考下
    2018-08-08
  • python每天定时运行某程序代码

    python每天定时运行某程序代码

    这篇文章主要介绍了python每天定时运行某程序代码,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Django Highcharts制作图表

    Django Highcharts制作图表

    Highcharts图表控件是目前使用最为广泛的图表控件 ,是纯JS图表库。这篇文章主要介绍了Django Highcharts制作图表的相关资料,非常的详细,有需要的小伙伴可以来参考下
    2016-08-08
  • 可视化之如何用pandas绘制简单的图形

    可视化之如何用pandas绘制简单的图形

    这篇文章主要介绍了可视化之如何用pandas绘制简单的图形问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06

最新评论