所以我用超级用户创建了两个扩展,但是当我尝试将这些扩展用作(非超级用户)时,它找不到它们。
作为超级用户:
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
,但仍然看不到这些扩展名存在。
答案 0 :(得分:4)
超级用户和普通用户连接到同一PostgreSQL实例中的不同数据库。
CREATE EXTENSION
是数据库本地的。