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

Django连接MySQL遇caching_sha2_password认证插件加载错误

解决Django连接MySQL时的caching_sha2_password认证错误

这个问题我之前也碰到过,核心原因是MySQL 8.0及以上版本默认使用caching_sha2_password作为用户认证插件,但你当前用的MySQLdb库(适配Python3.5的旧版本)不支持这种新的认证方式,所以才会抛出插件加载失败的错误。下面给你两种靠谱的解决思路:

方案一:修改MySQL用户的认证方式(最直接)

把Django专用的MySQL用户认证方式切换为旧版兼容的mysql_native_password,步骤如下:

  1. 登录MySQL命令行终端:
    mysql -u root -p
    
    输入root密码后进入MySQL交互界面。
  2. 切换到系统自带的mysql数据库:
    USE mysql;
    
  3. 修改目标用户的认证插件和密码(把username和password替换成你自己的数据库用户名和密码):
    ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
    
  4. 刷新MySQL权限配置:
    FLUSH PRIVILEGES;
    
  5. 退出MySQL,回到Django项目目录重新运行迁移命令:
    python3 manage.py makemigrations
    

方案二:更换支持caching_sha2_password的数据库驱动

如果不想修改MySQL的认证规则,可以换成支持新认证插件的驱动,推荐两种选择:

选项1:使用mysqlclient

这是MySQLdb的官方分支,完美支持新认证插件,安装步骤:

  • 先装系统依赖(以Ubuntu为例):
    sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
    
  • 再安装mysqlclient:
    pip3 install mysqlclient
    

安装完成后直接重新运行迁移命令即可。

选项2:使用pymysql

这是纯Python实现的MySQL驱动,同样支持新认证插件:

  1. 安装pymysql:
    pip3 install pymysql
    
  2. 在Django项目根目录(mysite文件夹)的__init__.py文件中添加以下代码,让pymysql模拟MySQLdb的接口:
    import pymysql
    pymysql.install_as_MySQLdb()
    
  3. 重新运行迁移命令。

另外补充个小细节:你的settings.py里PORT字段是空的,MySQL默认端口是3306,建议改成PORT: '3306',避免可能的连接异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:30:13