Python连接MySQL 8.0.11报错:不支持caching_sha2_password插件
解决MySQL 8.0.11与Python 3.6连接时的"caching_sha2_password不支持"错误
嘿,这个坑我之前踩过!MySQL 8.0开始默认启用了caching_sha2_password这种更安全的认证插件,但你用的Python 3.6搭配的旧版mysql-connector还不支持它,给你几个实用的解决办法:
方法一:修改现有用户的认证方式(最直接)
这是最快解决当前问题的办法,把你的root用户(或目标用户)的认证方式换回旧的mysql_native_password:
- 打开MySQL命令行工具,用root账号登录:
mysql -u root -p - 执行下面的SQL语句(记得替换成你的实际密码和用户信息):
要是你的用户不是localhost访问的,把ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的数据库密码'; FLUSH PRIVILEGES;localhost换成对应的主机名或IP就行。
方法二:升级mysql-connector-python版本
新版本的mysql-connector已经支持caching_sha2_password了,直接用pip升级:
pip install --upgrade mysql-connector-python
注意:Python 3.6可以适配mysql-connector-python 8.0以上的版本,升级后再运行你的连接代码应该就能正常工作了。
方法三:修改MySQL默认认证插件(适合新用户)
如果你不想逐个修改用户,也可以让MySQL默认用旧的认证方式,以后新建用户都会自动适配:
- 找到Windows下MySQL的配置文件
my.ini(一般在MySQL安装目录的根目录,比如C:\Program Files\MySQL\MySQL Server 8.0\my.ini) - 在
[mysqld]模块下添加一行:default_authentication_plugin=mysql_native_password - 重启MySQL服务(可以在Windows服务列表里找到MySQL服务,右键重启)
以上三种方法任选其一都能解决你的报错问题,个人推荐方法一或者方法二,根据你的实际场景选择就行~
内容的提问来源于stack exchange,提问作者MJA
相关产品推荐
相关产品推荐

