Flask连接MySQL报caching_sha2_password插件无法加载错误如何解决
错误原因
该报错是MySQL 8.0+版本的兼容性问题:MySQL 8.0之后默认将caching_sha2_password作为用户认证插件,而你当前使用的MySQLdb(mysqlclient)驱动不支持该认证方式,因此触发连接失败。
前置操作:修正代码语法错误
你提供的代码存在两处笔误和一处规范问题,先修正后再执行后续解决方案:
class Website(db.Model): # 补充必填主键字段,SQLAlchemy模型必须定义主键 id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(200), nullable=False) # 补全缺失的闭合括号 password = db.Column(db.String(500), nullable=False) # 修正拼写错误的字段名
解决方案(任选其一即可)
- 方案1:修改指定用户的认证插件为兼容旧版
登录MySQL命令行工具,依次执行以下SQL语句:
执行完成后重启MySQL服务,即可正常连接。ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Mudit@2008'; FLUSH PRIVILEGES; - 方案2:更换支持新认证插件的驱动
卸载原有mysqlclient,安装pymysql驱动:pip uninstall mysqlclient && pip install pymysql
同时修改数据库连接配置的URI前缀:app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:Mudit@2008@localhost/sys" - 方案3:修改MySQL全局默认认证插件
打开MySQL配置文件(Windows为my.ini,Linux/macOS为my.cnf),在[mysqld]配置段下添加:
保存后重启MySQL服务即可。default_authentication_plugin=mysql_native_password
内容的提问来源于stack exchange,提问作者Mudit Dagar
相关产品推荐
相关产品推荐

