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

Flask连接MySQL数据库报错求助:caching_sha2_password不被支持

Flask连接MySQL报错:Authentication plugin 'caching_sha2_password' is not supported

我是Flask框架的新手,最近尝试连接MySQL数据库时遇到了问题。我的__init__.py代码如下:

app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)

运行后出现了以下错误:

Authentication plugin '{0}' is not supported".format(plugin_name)) sqlalchemy.exc.NotSupportedError: (mysql.connector.errors.NotSupportedError) Authentication plugin 'caching_sha2_password' is not supported


解决方案1:修改MySQL用户的认证方式

MySQL 8.0及以上版本默认使用caching_sha2_password作为认证插件,但很多旧版本的数据库驱动不支持它。你可以把目标用户的认证方式改成兼容性更好的mysql_native_password:

  1. 登录你的MySQL服务器(比如用MySQL命令行工具)
  2. 执行以下SQL语句(替换成你的用户名、密码和主机):
ALTER USER 'your_username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;

执行完后重启Flask应用,应该就能正常连接了。

解决方案2:升级或更换数据库驱动

如果你不想修改MySQL的配置,可以尝试升级或更换适配caching_sha2_password的驱动:

  • 升级mysql-connector-python:
    执行以下命令升级官方驱动:

    pip install --upgrade mysql-connector-python
    

    确保你的数据库URI使用mysql+mysqlconnector://前缀,比如:

    SQLALCHEMY_DATABASE_URI = 'mysql+mysqlconnector://user:password@localhost/your_db'
    
  • 改用mysqlclient驱动:
    mysqlclient是Flask生态中常用的MySQL驱动,对caching_sha2_password支持良好,安装命令:

    pip install mysqlclient
    

    对应的数据库URI前缀是mysql://:

    SQLALCHEMY_DATABASE_URI = 'mysql://user:password@localhost/your_db'
    

解决方案3:在连接URI中指定认证插件

如果使用的是mysql-connector-python驱动,也可以直接在数据库连接URI里强制指定使用mysql_native_password插件,不需要修改MySQL用户配置:

SQLALCHEMY_DATABASE_URI = 'mysql+mysqlconnector://user:password@localhost/your_db?auth_plugin=mysql_native_password'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:27:50