使用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
相关产品推荐
相关产品推荐

