python3 通过 pymysql 连接 mysql 8.0 数据库报 cryptography is required for sha256_password or caching_sh 解决办法

今天需要用python 3通过 pymysql 连接 mysql 8.0 数据库,mysql 8.0 安装时选择的加密方式为 caching_sha2_password

网络上大家在使用mysql 8.0新的加密方式登录遇到问题时,基本都是回退到mysql_native_password。

既然mysql 8.0提供了新的加密方式,自然我希望能用新的加密方式连接数据库

最开始直接给connect传参数进去,连mysql并没有报错,可以成功

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root',charset='utf8')

 

之后把配置信息写到配置文件中,通过读配置文件的方式访问数据库

conn = pymysql.connect(read_default_group='mysql', read_default_file = './mysql.cfg')

read_default_group为配置文件中配置组,我的配置文件中是‘[mysql]’分组

read_default_file是配置文件的路径

配置文件内容如下

[mysql]

host = 127.0.0.1

port = 3306

user = root

password = root

charset = utf8

此时执行报错cryptography is required for sha256_password or caching_sha2_password

翻阅pymysql源码,找到该报错是_auth.py的第142行抛出的

C:\Python27\Lib\site-packages\pymysql\_auth.py

进一步发现_have_cryptography在引用cryptography相关模块成功为True,失败为False

此时发现是由于模块未安装引发的异常

pip install cryptography安装模块

重跑程序成功

程序中执行增删该查前,需要先select_db(),否则可能会报错。

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值