使用Python Connector连接MySQL报错:不支持caching_sha2_password插件
解决MySQL Connector认证插件不支持的问题
嘿,我来帮你搞定这个认证错误!虽然你创建了使用mysql_native_password的用户,但还是遇到caching_sha2_password的报错,大概率是这几个原因,咱们一步步排查:
1. 确认用户的认证插件确实设置正确
有时候创建用户时如果没明确指定认证插件,MySQL 8.0+版本会默认使用caching_sha2_password。你可以先登录MySQL服务器,执行下面的命令检查用户的认证插件:
SELECT user, host, plugin FROM mysql.user WHERE user = 'lcherukuri';
如果结果里plugin列不是mysql_native_password,重新创建用户并明确指定插件:
-- 删除旧用户(如果存在) DROP USER IF EXISTS 'lcherukuri'@'127.0.0.1'; -- 创建带指定认证插件的用户 CREATE USER 'lcherukuri'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'password'; -- 授予test数据库的权限 GRANT ALL PRIVILEGES ON test.* TO 'lcherukuri'@'127.0.0.1'; -- 刷新权限 FLUSH PRIVILEGES;
注意:这里用127.0.0.1是因为你的代码里用的是这个主机地址,它和localhost对应不同的连接方式(TCP vs socket),必须和代码中的主机参数匹配。
2. 在Python连接代码中显式指定认证插件
即使用户设置正确,有时候MySQL Connector可能还是会尝试用默认的认证方式,你可以在connect()方法里显式指定auth_plugin参数强制使用mysql_native_password:
import mysql.connector cnx = mysql.connector.connect( user='lcherukuri', password='password', host='127.0.0.1', database='test', auth_plugin='mysql_native_password' ) cnx.close()
3. 检查mysql-connector-python版本
如果你的连接器版本太旧,可能对新的认证插件支持有问题,建议更新到最新版本:
pip install --upgrade mysql-connector-python
按照这几步操作,应该就能解决这个认证错误啦!
内容的提问来源于stack exchange,提问作者lch
相关产品推荐
相关产品推荐

