You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Python MySQLdb连接代码时出现caching_sha2_password插件加载失败错误

解决MySQLdb连接时的caching_sha2_password认证错误

这个问题我之前踩过坑!你遇到的OperationalError: (2059, "Authentication plugin 'caching_sha2_password' cannot be loaded: 找不到指定的模块。")错误,本质原因是你用的MySQLdb库版本太老,不支持MySQL 8.0及以上版本默认的caching_sha2_password认证插件。下面给你两种靠谱的解决办法:

方法一:修改MySQL用户的认证方式

直接把目标用户的认证方式改成MySQLdb支持的mysql_native_password,步骤如下:

  1. 打开MySQL命令行工具,登录你的数据库:
    mysql -u root -p
    
    输入密码后进入MySQL交互界面。
  2. 执行修改用户认证方式的SQL语句(注意替换成你代码里的用户名、主机和密码):
    ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'root';
    
  3. 刷新MySQL权限,让修改生效:
    FLUSH PRIVILEGES;
    

完成后再运行你的Python代码,应该就能正常连接了。

方法二:更换支持新认证插件的数据库库

MySQLdb已经很久没有维护了,推荐换成更现代的库,比如pymysql或者mysql-connector-python,它们都支持caching_sha2_password:

用pymysql替代的示例:

  1. 先安装pymysql:
    pip install pymysql
    
  2. 修改你的Python代码:
    import pymysql
    # 和原来的参数完全一致,只是把MySQLdb换成pymysql
    db = pymysql.connect(host='127.0.0.1', port=3307, user='root', passwd='root', db='root')
    cursor = db.cursor()
    db.close()
    

如果你不想修改原有代码的导入语句,还可以让pymysql伪装成MySQLdb:

import pymysql
# 加上这一行,后续代码里的import MySQLdb就会自动用pymysql替代
pymysql.install_as_MySQLdb()

# 原来的代码不用改
import MySQLdb
db = MySQLdb.connect(host='127.0.0.1', port=3307, user='root', passwd='root', db='root')
cursor = db.cursor()
db.close()

简单总结下:如果只是临时解决问题,方法一快速有效;如果是长期项目,更推荐方法二,毕竟用维护活跃的库更靠谱。

内容的提问来源于stack exchange,提问作者shimaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:25:33