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认证:
打开MySQL命令行工具,用管理员账号登录:
mysql -u root -p输入你的root密码后进入MySQL控制台。
切换到系统数据库
mysql:USE mysql;更新目标用户的认证插件(把
db_user换成你Django配置里的数据库用户名,localhost换成你的数据库主机,your_password换成用户密码):ALTER USER 'db_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';如果是远程连接数据库,把
localhost改成%(允许任意主机)或者具体的IP地址。刷新MySQL权限:
FLUSH PRIVILEGES;重启MySQL服务:
- Windows系统:打开命令提示符(管理员权限),执行
net stop mysql net start mysql - Linux系统:执行
sudo systemctl restart mysql
- Windows系统:打开命令提示符(管理员权限),执行
方案二:升级mysqlclient到兼容版本
新版本的mysqlclient已经支持caching_sha2_password插件,如果你不想修改用户认证方式,可以尝试升级依赖:
先卸载旧版本的
mysqlclient:pip uninstall mysqlclient安装最新版本:
pip install --upgrade mysqlclient如果安装失败,需要先安装系统依赖:
- Debian/Ubuntu系统:
sudo apt-get install libmysqlclient-dev - CentOS/RHEL系统:
sudo yum install mysql-devel - Windows系统:需要安装Visual C++ Build Tools(勾选“C++构建工具”选项),然后再执行安装命令。
- Debian/Ubuntu系统:
方案三:在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
相关产品推荐
相关产品推荐

