【问题标题】:permission denied for schema pgagent架构 pgagent 的权限被拒绝
【发布时间】:2019-12-10 15:16:17
【问题描述】:

我想为开发人员创建一个专用角色,以便从 pgadmin 访问 pgagent。 我做到了:

CREATE ROLE pgagent_dev NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT NOLOGIN;
COMMENT ON ROLE pgagent_dev IS 'Role dedicated to Developers access to pgagent';

GRANT USAGE ON SCHEMA pgagent TO pgagent_dev ;
-- GRANT ALL ON SCHEMA pgagent TO pgagent_dev;
GRANT SELECT ON ALL TABLES IN SCHEMA pgagent TO pgagent_dev;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA pgagent TO pgagent_dev;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA pgagent TO pgagent_dev;

GRANT pgagent_dev TO toto;
GRANT pgagent_dev TO tutu;

从 pgadmin 中,他们可以看到 pgagent 文件夹但无法展开,并且 postgresql 会显示此日志。

2019-12-10 10:29:39.327 +07 [24784] ERROR:  permission denied for schema pgagent
2019-12-10 10:29:39.327 +07 [24784] STATEMENT:  
    SELECT
        has_table_privilege(
          'pgagent.pga_job', 'INSERT, SELECT, UPDATE'
        ) has_priviledge
    WHERE EXISTS(
        SELECT has_schema_privilege('pgagent', 'USAGE')
        WHERE EXISTS(
            SELECT cl.oid FROM pg_class cl
            LEFT JOIN pg_namespace ns ON ns.oid=relnamespace
            WHERE relname='pga_job' AND nspname='pgagent'
        )
    )

我做错了什么或忘记了什么? 谢谢。

【问题讨论】:

    标签: postgresql pgadmin pgagent


    【解决方案1】:

    这些语句按预期工作,我可以看到架构 pgagent 的正确权限。

    1. 请确保 CREATE ROLE 和所有 GRANT 语句都作为架构的所有者运行。
    2. 还可以在数据库上运行以下语句以查看实际的 o/p。应该如下。
    postgres=#选择 has_table_privilege( 'pgagent.pga_job'、'插入、选择、更新' ) has_priviledge 存在的地方( SELECT has_schema_privilege('pgagent', 'USAGE') 存在的地方( 从 pg_class cl 中选择 cl.oid 左连接 pg_namespace ns ON ns.oid=relnamespace 哪里 relname='pga_job' 和 nspname='pgagent' ) ); has_priviledge ---------------- 吨 (1 行)
    1. 您也可以尝试使用用户 tutu/toto 执行以下查询,以查看这些用户是否对架构 pgagent 具有适当的权限。
    [root@localhost bin]# ./psql -U tutu -d postgres -p 5432 psql (12.1) 键入“帮助”以获得帮助。 postgres=> 从 pgagent.pga_job 中选择 *; 工作ID |乔布斯 |职位名称 |职位描述 |工作主机代理 |工作启用 |创造就业机会 |换工作 |工作代理ID |下一个工作 运行 |工作结束 --------+----------+---------+---------+----------- ---+------------+-------------------+- ------------------+------------+------ -- ----+------------ 1 | 1 |测试 | | |吨 | 2019-12-10 06:35:33.643407+00 | 2019-12-10 06:35:33.643407+00 | | | (1 行)

    披露:我为EnterpriseDB (EDB)工作

    【讨论】:

      猜你喜欢
      • 2023-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-05
      • 2015-08-30
      • 1970-01-01
      相关资源
      最近更新 更多