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

Airflow 1.8密码认证配置执行user.password赋值时为何报AttributeError?

解决Airflow 1.8设置密码认证时的AttributeError问题

嘿,这个坑我之前维护老版本Airflow时踩过!直接给user.password赋值失败,是因为Airflow 1.8的User模型里,password是个只读的@property属性,根本不允许直接设置,得用官方提供的方法来操作。

问题根源

在Airflow 1.8的PasswordUser(或原生User模型)中,password被封装成了只读属性,直接赋值会触发AttributeError: can't set attribute,正确姿势是调用模型内置的set_password()方法来设置密码。

正确的密码设置步骤

  1. 先进入Airflow的交互式shell:
    airflow shell
    
  2. 在shell中执行以下代码创建/修改用户密码:
    from airflow import models
    from airflow.contrib.auth.backends.password_auth import PasswordUser
    from airflow.utils.db import session
    
    # 创建新用户的情况
    user = PasswordUser(models.User())
    user.username = "your_username"
    user.email = "your_email@example.com"
    
    # 重点!用set_password方法设置密码,而非直接赋值user.password
    user.set_password("your_secure_password_here")
    
    # 修改已有用户的情况,先查询再更新
    # user = session.query(models.User).filter(models.User.username == "existing_user").first()
    # user.set_password("new_secure_password")
    
    # 提交会话到数据库
    session.add(user)
    session.commit()
    

配套认证配置检查

你提到认证设置也出现相同错误,别忘了确保airflow.cfg里的Webserver认证配置正确:

[webserver]
# 开启认证开关
authenticate = True
# 指定密码认证后端
auth_backend = airflow.contrib.auth.backends.password_auth

配置完成后,记得重启Airflow Webserver服务,让设置生效。

额外提醒

  • Airflow 1.8是比较老旧的版本,后续版本(比如1.10+)的密码设置方式可能不同,但针对1.8版本必须用set_password()方法;
  • 操作时确保Airflow数据库连接正常,提交会话没有报错,否则密码不会被保存到数据库中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:01:08