【发布时间】: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