sqlalchemy - 身份验证错误 Airflow 1.9.0 尝试登录 - 无效的盐
问题描述
我在 EC2 实例中使用 RDS (posgreSQL) 中的数据库运行 Airflow 1.9.0。
我在气流中使用身份验证,我正在尝试通过以下步骤创建一个新用户:
>>> import airflow
>>> from airflow import models, settings
>>> from airflow.contrib.auth.backends.password_auth import PasswordUser
>>> user = PasswordUser(models.User())
>>> user.username = 'new_user_name'
>>> user.email = 'new_user_email@example.com'
>>> user._set_password = 'mypassword'
>>> session = settings.Session()
>>> session.add(user)
>>> session.commit()
>>> session.close()
>>> exit()
当我尝试执行 session.commit() 我有这样的错误
Traceback (most recent call last):
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: no such table: users
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 943, in commit
self.transaction.commit()
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2254, in flush
self._flush(objects)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2381, in _flush
transaction.rollback(_capture_exception=True)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2345, in _flush
flush_context.execute()
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 866, in _emit_insert_statements
execute(statement, params)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: users [SQL: 'INSERT INTO users (username, email, password) VALUES (?, ?, ?)'] [parameters: ('[![czambrano', 'some@email.com', b'$2b$12$1r4vhFaJHJEvOssY/EuDMuPQtN26M2crNHRjFowxYSf189P9HRkju'][1]][1])] (Background on this error at: http://sqlalche.me/e/e3q8)
我检查了我的 RDS 实例,并以这种方式创建了表 users
所以我尝试手动将我之前收到的值插入到表中:czambrano', 'some@email.com', b'$2b$12$1r4vhFaJHJEvOssY/EuDMuPQtN26M2crNHRjFowxYSf189P9HRkju'
但是当我尝试登录 Airflow 时,出现错误:
____/ ( ( ) ) \___
/( ( ( ) _ )) ) )\
(( ( )( ) ) ( ) )
((/ ( _( ) ( _) ) ( () ) )
( ( ( (_) (( ( ) .((_ ) . )_
( ( ) ( ( ) ) ) . ) ( )
( ( ( ( ) ( _ ( _) ). ) . ) ) ( )
( ( ( ) ( ) ( )) ) _)( ) ) )
( ( ( \ ) ( (_ ( ) ( ) ) ) ) )) ( )
( ( ( ( (_ ( ) ( _ ) ) ( ) ) )
( ( ( ( ( ) (_ ) ) ) _) ) _( ( )
(( ( )( ( _ ) _) _(_ ( (_ )
(_((__(_(__(( ( ( | ) ) ) )_))__))_)___)
((__) \\||lll|l||/// \_))
( /(/ ( ) ) )\ )
( ( ( ( | | ) ) )\ )
( /(| / ( )) ) ) )) )
( ( ((((_(|)_))))) )
( ||\(|(|)|/|| )
( |(||(||)|||| )
( //|/l|||)|\\ \ )
(/ / // /|//||||\\ \ \ \ _)
-------------------------------------------------------------------------------
Node: ip-10-7-0-242.ec2.internal
-------------------------------------------------------------------------------
Traceback (most recent call last):
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/flask/app.py", line 1988, in wsgi_app
response = self.full_dispatch_request()
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/flask/app.py", line 1641, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/flask/app.py", line 1544, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/flask/app.py", line 1639, in full_dispatch_request
rv = self.dispatch_request()
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/flask/app.py", line 1625, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/flask_admin/base.py", line 69, in inner
return self._run_view(f, *args, **kwargs)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/flask_admin/base.py", line 368, in _run_view
return fn(self, *args, **kwargs)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/airflow/www/views.py", line 645, in login
return airflow.login.login(self, request)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/airflow/contrib/auth/backends/password_auth.py", line 135, in login
if not user.authenticate(password):
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/airflow/contrib/auth/backends/password_auth.py", line 66, in authenticate
return check_password_hash(self._password, plaintext)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/flask_bcrypt.py", line 67, in check_password_hash
return Bcrypt().check_password_hash(pw_hash, password)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/flask_bcrypt.py", line 193, in check_password_hash
return safe_str_cmp(bcrypt.hashpw(password, pw_hash), pw_hash)
File "/home/ubuntu/.local/share/virtualenvs/pampita-jFcteNag/lib/python3.6/site-packages/bcrypt/__init__.py", line 87, in hashpw
ValueError: Invalid salt
一些帮助会有所帮助!
解决方案
运行upgradedb
以便创建必要的表或添加必要的列。
然后再运行以下命令:(注 .encode('utf-8')
)
import airflow
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser
user = PasswordUser(models.User())
user.username = 'new_user'
user.email = 'newuser@example.com'
user._set_password = 'mypassword'.encode('utf8')
session = settings.Session()
session.add(user)
session.commit()
session.close()
这应该解决它。
推荐阅读
- swift - Xcode 找不到我的 Localizable.stringsdict 文件
- python - Pandas dropna() 不适用于过滤后的数据
- javascript - Rails 6:未捕获的引用错误 - $ 未定义
- sql - 如何根据不同的标准对组进行细分
- android - Andriod:导航栏隐藏,但活动未填满屏幕
- java - Android Studio RecyclerView:没有附加适配器;跳过布局
- javascript - 是否可以使用多个带有 react useReducer 钩子的减速器来管理状态?
- elasticsearch - Kubernetes 上的 Elasticsearch -“弹性云 (ECK)”与“Helm 图表”
- php - 无法通过 PHP 连接到 docker mysql 容器
- tensorflow - 确定 Tensorflow Hub 保存模型中的标签集