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

使用Flask-SQLAlchemy连接MySQL时遇1045访问拒绝错误求助

解决Flask-SQLAlchemy连接MySQL时的1045权限错误

错误说明

提交登录信息时触发数据库连接错误:

1045, "Access denied for user 'root'@'localhost' (using password: NO)"

问题根源

你的数据库连接URI配置中,root用户的密码位为空:

app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://root:@localhost/digifit"

程序尝试无密码登录MySQL,但你的root@localhost用户需要密码验证,导致权限被拒绝。

解决方案

1. 修正数据库连接URI

在root后添加你的MySQL root用户密码,格式为 mysql://root:你的密码@localhost/digifit:

# 示例:假设密码为123456
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://root:123456@localhost/digifit"

2. 确认用户数据库权限

确保root@localhost拥有digifit数据库的完整权限,通过MySQL命令行执行:

GRANT ALL PRIVILEGES ON digifit.* TO 'root'@'localhost';
FLUSH PRIVILEGES;

3. 适配MySQL 8.0+版本(可选)

如果使用MySQL 8.0及以上版本,默认认证插件为caching_sha2_password,部分场景下可能存在兼容问题,可修改为mysql_native_password:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;

代码小优化

代码中Password变量名首字母大写,与模型类的password字段命名不一致,建议统一为小写:

password = request.form.get('password')
entry = Details(username=username, password=password)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:15:35