【问题标题】:PSQL User Cannot See Extensions Created By SuperuserPSQL 用户看不到由超级用户创建的扩展
【发布时间】:2018-04-05 23:34:09
【问题描述】:

所以我用我的超级用户创建了两个扩展,但是当我尝试以(非超级)用户的身份使用这些扩展时,它找不到它们。

作为超级用户:

postgres=# SELECT e.extname
postgres-#      , n.nspname      AS home_schema_of_extension
postgres-#      , extrelocatable AS extension_can_be_relocated
postgres-# FROM   pg_catalog.pg_extension e
postgres-# JOIN   pg_catalog.pg_namespace n ON n.oid = e.extnamespace;
    extname    | home_schema_of_extension | extension_can_be_relocated
---------------+--------------------------+----------------------------
 adminpack     | pg_catalog               | f
 plpgsql       | pg_catalog               | f
 fuzzystrmatch | public                   | t
 btree_gist    | public                   | t
(4 rows)

作为另一个用户:

toggleme=> SELECT e.extname
toggleme->      , n.nspname      AS home_schema_of_extension
toggleme->      , extrelocatable AS extension_can_be_relocated
toggleme-> FROM   pg_catalog.pg_extension e
toggleme-> JOIN   pg_catalog.pg_namespace n ON n.oid = e.extnamespace;
 extname | home_schema_of_extension | extension_can_be_relocated
---------+--------------------------+----------------------------
 plpgsql | pg_catalog               | f
(1 row)

为什么非超级用户无法使用这些扩展?非超级用户的搜索路径中有public,但仍然看不到这些扩展名的存在。

【问题讨论】:

  • 请注意,您也可以使用\dx 列出psql 中的扩展名。无需记住那个 SQL 查询。

标签: postgresql roles psql


【解决方案1】:

超级用户和普通用户连接到同一个PostgreSQL实例中的不同数据库。

CREATE EXTENSION 是本地数据库。

【讨论】:

  • 是的,就是这样!谢谢,克雷格。
猜你喜欢
  • 2013-05-07
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 2022-11-25
  • 1970-01-01
  • 1970-01-01
  • 2014-01-10
  • 1970-01-01
相关资源
最近更新 更多