Flask-SQLAlchemy升级后MySQL 1045权限拒绝问题求助
Flask-SQLAlchemy/SQLAlchemy升级引发MySQL权限认证失败问题
问题背景
升级Flask项目依赖后,执行flask db upgrade等数据库迁移命令时触发以下权限错误:
sqlalchemy.exc.ProgrammingError: (mysql.connector.errors.ProgrammingError) 1045 (28000): Access denied for user 'my_user'@'localhost' (using password: YES)
本次升级的依赖版本变更:
- Flask: 2.0.2 -> 2.3.2
- Flask-SQLAlchemy: 2.4.3 -> 3.0.3
- Flask-Migrate: 2.5.3 -> 4.0.4
- mysql-connector-python: 8.0.26 -> 8.0.33
已完成的排查步骤
已排除数据库配置及环境本身的问题,排查项包括:
- 通过
mysql -u my_user -p可正常登录MySQL终端并操作数据库 - 确认数据库URI格式正确:
"mysql+mysqlconnector://my_user:my_password@localhost/my_db" - 尝试URL编码密码特殊字符、更换无特殊字符密码并刷新MySQL权限,问题未解决
- 确认本机无其他MySQL实例运行
- 验证MySQL端口为3306,尝试在URI中显式指定端口,问题依旧
- 确认MySQL版本为8.0.33(与连接器版本匹配),并重启MySQL服务
- 确认用户权限配置正确,可手动创建数据库表
- 创建新的全权限测试用户,问题仍存在
问题定位结果
通过逐步回滚依赖版本排查,确认问题源于以下至少一项升级:
- Flask-SQLAlchemy 2.5.1 -> 3.0.2(无法进一步细分到3.0.0或3.0.1,受其他问题限制)
- SQLAlchemy 1.4.48 -> 2.x
注:保留Flask-SQLAlchemy 2.5.1和SQLAlchemy 1.4.48时,单独升级Flask、Flask-Migrate及mysql-connector-python至更高版本,flask db upgrade可正常执行。
内容的提问来源于stack exchange,提问作者DukeSilver
相关产品推荐
相关产品推荐

