PSQL用户无法看到超级用户创建的扩展

时间:2017-10-25 02:20:48

标签: postgresql roles psql

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

作为超级用户:

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,但仍然看不到这些扩展名存在。

1 个答案:

答案 0 :(得分:4)

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

CREATE EXTENSION是数据库本地的。