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

Django连接MySQL 8.0报错:无法加载caching_sha2_password插件

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

这个问题我之前帮不少开发者解决过,本质是MySQL 8.0默认启用了caching_sha2_password认证插件,但部分旧版本的MySQL客户端(比如Django依赖的mysqlclient)要么不支持这个插件,要么系统缺少对应的依赖模块。给你几个靠谱的解决方案,按顺序试试:

方案一:修改数据库用户的认证方式为mysql_native_password

这是最直接有效的方法,把Django使用的数据库用户切换回兼容性更好的mysql_native_password认证:

  1. 打开MySQL命令行工具,用管理员账号登录:

    mysql -u root -p
    

    输入你的root密码后进入MySQL控制台。

  2. 切换到系统数据库mysql:

    USE mysql;
    
  3. 更新目标用户的认证插件(把db_user换成你Django配置里的数据库用户名,localhost换成你的数据库主机,your_password换成用户密码):

    ALTER USER 'db_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
    

    如果是远程连接数据库,把localhost改成%(允许任意主机)或者具体的IP地址。

  4. 刷新MySQL权限:

    FLUSH PRIVILEGES;
    
  5. 重启MySQL服务:

    • Windows系统:打开命令提示符(管理员权限),执行
      net stop mysql
      net start mysql
      
    • Linux系统:执行
      sudo systemctl restart mysql
      

方案二:升级mysqlclient到兼容版本

新版本的mysqlclient已经支持caching_sha2_password插件,如果你不想修改用户认证方式,可以尝试升级依赖:

  1. 先卸载旧版本的mysqlclient:

    pip uninstall mysqlclient
    
  2. 安装最新版本:

    pip install --upgrade mysqlclient
    
  3. 如果安装失败,需要先安装系统依赖:

    • Debian/Ubuntu系统:
      sudo apt-get install libmysqlclient-dev
      
    • CentOS/RHEL系统:
      sudo yum install mysql-devel
      
    • Windows系统:需要安装Visual C++ Build Tools(勾选“C++构建工具”选项),然后再执行安装命令。

方案三:在Django配置中指定认证插件

如果上面两种方法都不行,可以尝试在Django的settings.py里显式指定认证插件:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your_database_name',
        'USER': 'db_user',
        'PASSWORD': 'your_password',
        'HOST': 'localhost',
        'PORT': '3306',
        'OPTIONS': {
            'auth_plugin': 'mysql_native_password',
        },
    }
}

修改配置后,重启Django服务器再测试连接。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:56:34