PSQL 用户看不到超级用户创建的扩展
PSQL User Cannot See Extensions Created By Superuser
所以我用我的超级用户创建了两个扩展程序,但是当我尝试以(非超级)用户身份使用这些扩展程序时,它找不到它们。
作为超级用户:
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
,但仍然看不到这些扩展的存在。
超级用户和普通用户连接到同一个 PostgreSQL 实例中的不同数据库。
CREATE EXTENSION
是本地数据库。
所以我用我的超级用户创建了两个扩展程序,但是当我尝试以(非超级)用户身份使用这些扩展程序时,它找不到它们。
作为超级用户:
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
,但仍然看不到这些扩展的存在。
超级用户和普通用户连接到同一个 PostgreSQL 实例中的不同数据库。
CREATE EXTENSION
是本地数据库。