即使在使用 GRANT 命令后创建表的权限也被拒绝

问题描述 投票:0回答:1

我已连接到具有

postgres
角色的 Postgres 14 实例。我创建了一个名为
airflow
的新数据库和一个名为
airflow
的新用户/角色,他是数据库的所有者。

                                        List of databases
   Name    |    Owner    | Encoding |   Collate   |    Ctype    |        Access privileges
-----------+-------------+----------+-------------+-------------+---------------------------------
 airflow   | airflow     | UTF8     | en_HK.UTF-8 | en_HK.UTF-8 |

我已经发出命令

grant all on database airflow to airflow;
然后我有:

                                        List of databases
   Name    |    Owner    | Encoding |   Collate   |    Ctype    |        Access privileges
-----------+-------------+----------+-------------+-------------+---------------------------------
 airflow   | airflow     | UTF8     | en_HK.UTF-8 | en_HK.UTF-8 | =Tc/airflow                    +
           |             |          |             |             | airflow=CTc/airflow

但是我仍然得到这个错误:

sqlalchemy.exc.ProgrammingError: (psycopg2.errors.InsufficientPrivilege) permission denied for schema public
LINE 2: CREATE TABLE log (
                     ^

[SQL:
CREATE TABLE log (
        id SERIAL NOT NULL,
        dttm TIMESTAMP WITH TIME ZONE,
        dag_id VARCHAR(250),
        task_id VARCHAR(250),
        map_index INTEGER,
        event VARCHAR(30),
        execution_date TIMESTAMP WITH TIME ZONE,
        owner VARCHAR(500),
        extra TEXT,
        CONSTRAINT log_pkey PRIMARY KEY (id)
)    
]

(此错误的背景信息:https://sqlalche.me/e/14/f405

我正在以

airflow
用户的身份连接到实例到
airflow
数据库。

更新:刚刚在 pgAdmin 上看到我没有在 PUBLIC 模式上授予所有气流 ...

postgresql privileges sql-grant
1个回答
1
投票
grant all on database airflow to airflow;

听起来很强大,但并没有那么多。该角色仍然需要对模式、表以及数据库中可能的更多对象的额外权限。

特别是,您的错误消息说:

public 模式权限被拒绝

所以你(至少)需要对模式

CREATE
public
特权。直接或通过授予
PUBLIC
的方式。喜欢:

GRANT CREATE ON SCHEMA public TO airflow;

Postgres 15 的重要更新! 发行说明:

删除

PUBLIC
公共模式的创建权限(Noah Misch)

和:

public
模式的所有者更改为新的
pg_database_owner
角色(Noah Misch)

您仍然可以按照自己喜欢的方式进行更改。它只是新的、更安全、更具限制性的默认设置。点击链接了解详情。
但这不适用于 Postgres 14。您必须以某种方式自己删除了权限。

相关:

© www.soinside.com 2019 - 2024. All rights reserved.