有关“初始化后端”(link)的文档中未提及此内容。
如果我创建一个airflow_user
角色和一个airflow
模式。如果我在airflow_user
模式上授予USAGE
airflow
,然后在所有表上授予SELECT UPDATE INSERT DELETE
,就足够了吗?该用户在GRANT ALL
模式中的所有表上都需要airflow
吗?
最好让airflow_user
成为airflow
模式的所有者,据了解,由于它是所有者,因此将允许该模式内部的所有特权?
答案 0 :(得分:0)
创建架构是不够的。
架构不是为 AIRFLOW__CORE__SQL_ALCHEMY_CONN
配置的 DSN 值中的可配置选项。
哪个 psycopg2 驱动程序依赖于 doesn't allow to configure search_path
作为 DSN 中的额外参数的 libpq。
最佳做法是为 Airflow 创建数据库。
例如
复制到create-airflow-db.sql
create database airflow;
create user airflow;
alter user airflow with password 'airflow';
grant all on database airflow to airflow;
在容器中启动数据库服务器。让它在单独的终端中运行。
docker run -it --rm \
--publish '5432:5432' \
-v $PWD/create-airflow-db.sql:/create-airflow-db.sql \
--name postgres \
-e POSTGRES_PASSWORD=password postgres:alpine
在不同终端的 SQL 文件中运行查询。
docker exec -ti postgres psql -w -U postgres -d postgres -f create-airflow-db.sql
最后,在新终端中运行 Airflow 服务。
docker run --rm \
-it \
-e 'AIRFLOW__CORE__SQL_ALCHEMY_CONN=postgresql://airflow:airflow@172.17.0.1:5432/airflow' \
--publish '8080:8080' puckel/docker-airflow
您可以连接到数据库服务器并列出表。
➜ airflow docker exec -ti postgres psql -w -U airflow -d airflow
psql (13.1)
Type "help" for help.
airflow=> \dt
List of relations
Schema | Name | Type | Owner
--------+-----------------------+-------+---------
public | alembic_version | table | airflow
public | chart | table | airflow
public | connection | table | airflow
public | dag | table | airflow
public | dag_pickle | table | airflow
public | dag_run | table | airflow
public | dag_tag | table | airflow
public | import_error | table | airflow
public | job | table | airflow
public | known_event | table | airflow
public | known_event_type | table | airflow
public | kube_resource_version | table | airflow
public | kube_worker_uuid | table | airflow
public | log | table | airflow
public | serialized_dag | table | airflow
public | sla_miss | table | airflow
public | slot_pool | table | airflow
public | task_fail | table | airflow
public | task_instance | table | airflow
public | task_reschedule | table | airflow
public | users | table | airflow
public | variable | table | airflow
public | xcom | table | airflow
(23 rows)
在这里您可以看到支持 Airflow 模型的表是在公共架构或搜索路径中创建的。