【问题标题】:What postgres privileges are required for Apache Airflow database backend?Apache Airflow 数据库后端需要哪些 postgres 权限?
【发布时间】:2019-03-30 05:35:38
【问题描述】:

关于“初始化后端”的文档(link)中没有提到这一点。

如果我创建一个airflow_user 角色和一个airflow 架构。如果我在 airflow 架构上授予 airflow_user USAGE 然后在所有表上授予 SELECT UPDATE INSERT DELETE 就足够了吗?该用户是否需要 GRANT ALLairflow 架构中的所有表?

airflow_user 成为airflow 架构的所有者会更好吗?据我所知,它将允许它在该架构内拥有所有特权,因为它是所有者?

参考:
Postgres GRANT (link)
Postgres 权限 (link)
未回答的 SO 问题 (link)

【问题讨论】:

    标签: postgresql airflow


    【解决方案1】:

    创建架构是不够的。 该架构不是为 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 模型的表是在公共架构或搜索路径中创建的。

    【讨论】:

      猜你喜欢
      • 2011-01-01
      • 2011-07-26
      • 2019-12-24
      • 1970-01-01
      • 2014-08-28
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      相关资源
      最近更新 更多